So stellen Sie Nginx in einem Kubernetes-Cluster bereit


In unserem letzten Artikel haben wir erläutert, wie ein Kubernetes-Cluster eingerichtet und ausgeführt wird. Lassen Sie uns erläutern, wie wir ihn bereitstellen können NGINX Service auf unserem Cluster.

Ich werde diese Bereitstellung auf einer virtuellen Maschine ausführen, die von einem öffentlichen Cloud-Anbieter gehostet wird. Wie bei vielen öffentlichen Cloud-Diensten unterhalten viele im Allgemeinen ein öffentliches und privates IP-Schema für ihre virtuellen Maschinen.

Testumgebung

Master Node - Public IP: 104.197.170.99 and Private IP: 10.128.15.195
Worker Node 1 - Public IP: 34.67.149.37 and Private IP: 10.128.15.196
Worker Node 2 - Public IP: 35.232.161.178 and Private IP: 10.128.15.197

Bereitstellen von NGINX in einem Kubernetes-Cluster

Wir werden diese Bereitstellung vom Master-Knoten aus ausführen.

Beginnen wir mit der Überprüfung des Status des Clusters. Alle Ihre Knoten sollten sich in einem befinden BEREIT Zustand.

# kubectl get nodes
Überprüfen Sie den Kubernetes-Clusterstatus
Überprüfen Sie den Kubernetes-Clusterstatus

Wir erstellen eine Bereitstellung von NGINX Verwendung der NGINX Bild.

# kubectl create deployment nginx --image=nginx
Bereitstellen von Nginx auf Kubernetes
Bereitstellen von Nginx auf Kubernetes


Sie können jetzt den Status Ihrer Bereitstellung anzeigen.

# kubectl get deployments
Überprüfen Sie die Bereitstellung von Nginx auf Kubernetes
Überprüfen Sie die Bereitstellung von Nginx auf Kubernetes

Wenn Sie mehr Details zu Ihrer Bereitstellung erfahren möchten, können Sie das ausführen beschreiben Befehl. Beispielsweise kann ermittelt werden, wie viele Replikate der Bereitstellung ausgeführt werden. In unserem Fall erwarten wir, dass eine Replik von 1 ausgeführt wird (dh 1/1 Repliken).

# kubectl describe deployment nginx
Überprüfen Sie die Nginx-Bereitstellungsdetails
Überprüfen Sie die Nginx-Bereitstellungsdetails

Jetzt, da Ihre Nginx-Bereitstellung aktiv ist, möchten Sie möglicherweise die verfügbar machen NGINX Service für eine öffentliche IP im Internet erreichbar.

Ihren Nginx-Dienst einem öffentlichen Netzwerk aussetzen

Kubernetes bietet verschiedene Optionen, wenn Sie Ihren Dienst basierend auf einer Funktion namens Kubernetes-Diensttypen verfügbar machen. Diese sind:

  1. ClusterIP – Dieser Diensttyp macht den Dienst im Allgemeinen auf einer internen IP verfügbar, die nur innerhalb des Clusters und möglicherweise nur innerhalb der Clusterknoten erreichbar ist.
  2. NodePort – Dies ist die grundlegendste Option, um Ihren Dienst außerhalb Ihres Clusters an einem bestimmten Port (der so genannten) zugänglich zu machen NodePort) auf jedem Knoten im Cluster. Wir werden diese Option in Kürze veranschaulichen.
  3. Lastenausgleicher – Diese Option nutzt externe Lastausgleichsdienste, die von verschiedenen Anbietern angeboten werden, um den Zugriff auf Ihren Dienst zu ermöglichen. Dies ist eine zuverlässigere Option, wenn Sie über eine hohe Verfügbarkeit für Ihren Dienst nachdenken, und bietet mehr Funktionen als der Standardzugriff.
  4. Externer Name – Dieser Dienst leitet den Datenverkehr zu Diensten außerhalb des Clusters um. Daher wird der Dienst einem DNS-Namen zugeordnet, der außerhalb Ihres Clusters gehostet werden kann. Es ist wichtig zu beachten, dass hier kein Proxy verwendet wird.

Der Standarddiensttyp ist ClusterIP.

In unserem Szenario möchten wir die verwenden NodePort-Diensttyp weil wir sowohl eine öffentliche als auch eine private IP-Adresse haben und vorerst keinen externen Load Balancer benötigen. Bei diesem Diensttyp weist Kubernetes diesen Dienst den Ports auf dem zu 30000+ Angebot.

# kubectl create service nodeport nginx --tcp=80:80
Erstellen Sie einen NodePort-Dienst, um Nginx verfügbar zu machen
Erstellen Sie einen NodePort-Dienst, um Nginx verfügbar zu machen

Führen Sie die aus Holen Sie sich SVC Befehl, um eine Zusammenfassung des Dienstes und der offengelegten Ports anzuzeigen.

# kubectl get svc
Überprüfen Sie den Nginx-Service und den Port
Überprüfen Sie den Nginx-Service und den Port

Jetzt können Sie überprüfen, ob die Nginx Die Seite ist auf allen Knoten mit dem Befehl curl erreichbar.

# curl master-node:30386
# curl node-1:30386
# curl node-2:30386
Überprüfen Sie die Nginx-Seite im Kubernetes-Cluster
Überprüfen Sie die Nginx-Seite im Kubernetes-Cluster

Wie Sie sehen können, ist die “WILLKOMMEN BEI NGINX!Seite kann erreicht werden.

Erreichen kurzlebiger ÖFFENTLICHER IP-Adressen

Wie Sie vielleicht bemerkt haben, Gouverneure meldet, dass ich keine aktive öffentliche IP registriert habe oder vielmehr keine EXTERNE IP.

# kubectl get svc
Überprüfen Sie den Nginx-Service und den Port
Überprüfen Sie den Nginx-Service und den Port

Lassen Sie uns überprüfen, ob es tatsächlich wahr ist, dass ich mit dem IP-Befehl keine EXTERNE IP an meine Schnittstellen angehängt habe.

# ip a
Überprüfen Sie die IP-Adressen
Überprüfen Sie die IP-Adressen

Keine öffentliche IP, wie Sie sehen können.

Wie bereits erwähnt, führe ich diese Bereitstellung derzeit auf einem Computer aus Virtuelle Maschine angeboten von einem öffentlichen Cloud-Anbieter. Während keiner bestimmten Schnittstelle eine öffentliche IP zugewiesen ist, hat der VM-Anbieter eine kurzlebige externe IP-Adresse vergeben.

Eine kurzlebige externe IP-Adresse ist eine temporäre IP-Adresse, die an die VM angehängt bleibt, bis die virtuelle Instanz gestoppt wird. Beim Neustart der virtuellen Instanz wird eine neue externe IP zugewiesen. Grundsätzlich ist es für Dienstanbieter eine einfache Möglichkeit, auf nicht genutzte öffentliche IP-Adressen zuzugreifen.

Die Herausforderung hier ist, abgesehen von der Tatsache, dass Ihre öffentliche IP nicht statisch ist, dass die Ephemere öffentliche IP ist einfach eine Erweiterung (oder ein Proxy) der privaten IP, und aus diesem Grund wird auf den Dienst nur über Port 30386 zugegriffen. Dies bedeutet, dass auf den Dienst über die URL zugegriffen wird , das ist 104.197.170.99:30386Wenn Sie Ihren Browser überprüfen, sollte die Begrüßungsseite angezeigt werden.

Überprüfen Sie die auf Kubernetes bereitgestellte Nginx-Seite
Überprüfen Sie die auf Kubernetes bereitgestellte Nginx-Seite

Damit haben wir erfolgreich eingesetzt NGINX auf unserem 3-Knoten-Kubernetes-Cluster.


0 Comments

Leave a Reply