So stellen Sie Nginx in einem Kubernetes-Cluster bereit
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
Wir erstellen eine Bereitstellung von NGINX Verwendung der NGINX Bild.
# kubectl create deployment nginx --image=nginx
Sie können jetzt den Status Ihrer Bereitstellung anzeigen.
# kubectl get deployments
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
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:
- 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.
- 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.
- 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.
- 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
Führen Sie die aus Holen Sie sich SVC Befehl, um eine Zusammenfassung des Dienstes und der offengelegten Ports anzuzeigen.
# kubectl get svc
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
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
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
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.
Damit haben wir erfolgreich eingesetzt NGINX auf unserem 3-Knoten-Kubernetes-Cluster.