Website-Suche

So stellen Sie Nginx auf einem Kubernetes-Cluster bereit


In unserem letzten Artikel haben wir besprochen, wie man einen Kubernetes-Cluster einrichtet und betreibt. Lassen Sie uns besprechen, wie wir den NGINX-Dienst auf unserem Cluster bereitstellen können.

Ich werde diese Bereitstellung auf einer virtuellen Maschine ausführen, die von einem öffentlichen Cloud-Anbieter gehostet wird. Wie bei vielen öffentlichen Cloud-Diensten pflegen 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

Bereitstellung von NGINX auf einem Kubernetes-Cluster

Wir werden diese Bereitstellung vom Masterknoten aus ausführen.

Beginnen wir mit der Überprüfung des Status des Clusters. Alle Ihre Knoten sollten sich im Status READY befinden.

kubectl get nodes

Wir erstellen eine Bereitstellung von NGINX mithilfe des NGINX-Images.

kubectl create deployment nginx --image=nginx

Sie können jetzt den Status Ihrer Bereitstellung sehen.

kubectl get deployments

Wenn Sie weitere Details zu Ihrer Bereitstellung sehen möchten, können Sie den Befehl describe ausführen. Beispielsweise ist es möglich zu ermitteln, wie viele Replikate der Bereitstellung ausgeführt werden. In unserem Fall erwarten wir, dass ein Replikat von 1 ausgeführt wird (d. h. 1/1-Replikate).

kubectl describe deployment nginx

Jetzt ist Ihre Nginx-Bereitstellung aktiv. Möglicherweise möchten Sie den NGINX-Dienst einer öffentlichen IP-Adresse zugänglich machen, die über das Internet erreichbar ist.

Stellen Sie Ihren Nginx-Dienst einem öffentlichen Netzwerk zur Verfügung

Kubernetes bietet mehrere Optionen zum Offenlegen Ihres Dienstes basierend auf einer Funktion namens Kubernetes Service-Types:

  1. ClusterIP – Dieser Diensttyp stellt den Dienst im Allgemeinen auf einer internen IP bereit, die nur innerhalb des Clusters und möglicherweise nur innerhalb der Cluster-Knoten erreichbar ist.
  2. NodePort – Dies ist die einfachste Option, um Ihren Dienst außerhalb Ihres Clusters an einem bestimmten Port (genannt NodePort) auf jedem Knoten im Cluster verfügbar zu machen. Wir werden diese Option in Kürze veranschaulichen.
  3. LoadBalancer – Diese Option nutzt externe Load-Balancing-Dienste, 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 Ihres Dienstes nachdenken, und verfügt über mehr Funktionen als den Standardzugriff.
  4. ExternalName – Dieser Dienst leitet den Datenverkehr an Dienste außerhalb des Clusters weiter. Somit wird der Dienst einem DNS-Namen zugeordnet, der von Ihrem Cluster aus gehostet werden könnte. Es ist wichtig zu beachten, dass hierbei kein Proxying verwendet wird.

Der Standarddiensttyp ist ClusterIP.

In unserem Szenario möchten wir den NodePort-Diensttyp verwenden, da wir sowohl eine öffentliche als auch eine private IP-Adresse haben und vorerst keinen externen Lastenausgleich benötigen. Mit diesem Diensttyp weist Kubernetes diesen Dienst Ports im Bereich 30000+ zu.

kubectl create service nodeport nginx --tcp=80:80

Führen Sie den Befehl get svc aus, um eine Zusammenfassung des Dienstes und der bereitgestellten Ports anzuzeigen.

kubectl get svc

Jetzt können Sie mithilfe des Curl-Befehls überprüfen, ob die Nginx-Seite auf allen Knoten erreichbar ist.

curl master-node:30386
curl node-1:30386
curl node-2:30386

Wie Sie sehen, ist die Seite „WILLKOMMEN BEI NGINX!“ erreichbar.

Erreichen kurzlebiger öffentlicher IP-Adressen

Wie Sie vielleicht bemerkt haben, meldet Kubernetes, dass ich keine aktive öffentliche IP registriert habe, bzw. keine EXTERNE IP registriert habe.

kubectl get svc

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

ip a

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

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

Eine flüchtige externe IP-Adresse ist eine temporäre IP-Adresse, die mit der VM verbunden bleibt, bis die virtuelle Instanz gestoppt wird. Beim Neustart der virtuellen Instanz wird eine neue externe IP zugewiesen. Im Grunde handelt es sich dabei um eine einfache Möglichkeit für Dienstanbieter, ungenutzte öffentliche IP-Adressen zu nutzen.

Die Herausforderung hierbei besteht neben der Tatsache, dass Ihre öffentliche IP nicht statisch ist, darin, dass die ephemere öffentliche IP einfach eine Erweiterung (oder ein Proxy) der privaten IP ist, und aus diesem Grund wird der Dienst dies auch tun Der Zugriff erfolgt nur über Port 30386. Das bedeutet, dass auf den Dienst über die URL zugegriffen wird, also 104.197.170.99:30386, wenn Sie dies überprüfen Wenn Sie Ihren Browser öffnen, sollten Sie die Willkommensseite sehen können.

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