Zoeken op website

Hoe Nginx op een Kubernetes-cluster te implementeren


In ons laatste artikel hebben we besproken hoe we een Kubernetes Cluster kunnen opzetten en uitvoeren. Laten we bespreken hoe we de NGINX service op ons cluster kunnen implementeren.

Ik zal deze implementatie uitvoeren op een virtuele machine die wordt gehost door een openbare cloudprovider. Zoals bij veel openbare clouddiensten het geval is, hanteren velen over het algemeen een openbaar en privé IP-schema voor hun virtuele machines.

Omgeving testen

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

NGINX implementeren op een Kubernetes-cluster

We zullen deze implementatie uitvoeren vanaf het masterknooppunt.

Laten we beginnen met het controleren van de status van het cluster. Al uw knooppunten moeten de status READY hebben.

kubectl get nodes

We maken een implementatie van NGINX met behulp van de NGINX-image.

kubectl create deployment nginx --image=nginx

U kunt nu de status van uw implementatie zien.

kubectl get deployments

Als u meer details over uw implementatie wilt zien, kunt u de opdracht describe uitvoeren. Zo is het bijvoorbeeld mogelijk om te bepalen hoeveel replica’s van de implementatie draaien. In ons geval verwachten we dat er een replica van 1 wordt uitgevoerd (d.w.z. 1/1 replica's).

kubectl describe deployment nginx

Nu uw Nginx-implementatie actief is, wilt u wellicht de NGINX-service beschikbaar stellen aan een openbaar IP-adres dat bereikbaar is op internet.

Uw Nginx-service blootstellen aan een openbaar netwerk

Kubernetes biedt verschillende opties bij het beschikbaar stellen van uw service op basis van een functie genaamd Kubernetes Service-types en deze zijn:

  1. ClusterIP – Dit servicetype stelt de service doorgaans beschikbaar op een intern IP-adres, dat alleen binnen het cluster bereikbaar is, en mogelijk alleen binnen de clusterknooppunten.
  2. NodePort – Dit is de meest basale optie om ervoor te zorgen dat uw service toegankelijk is buiten uw cluster, op een specifieke poort (de NodePort genoemd) op elk knooppunt in het cluster. We zullen deze optie binnenkort illustreren.
  3. LoadBalancer – Deze optie maakt gebruik van externe Load-Balancing-services die door verschillende providers worden aangeboden om toegang tot uw service mogelijk te maken. Dit is een betrouwbaardere optie als u denkt aan hoge beschikbaarheid voor uw service, en heeft meer functies dan standaardtoegang.
  4. ExternalName – Deze service leidt verkeer om naar services buiten het cluster. Als zodanig wordt de service dus toegewezen aan een DNS-naam die buiten uw cluster kan worden gehost. Het is belangrijk op te merken dat hierbij geen gebruik wordt gemaakt van proxying.

Het standaard servicetype is ClusterIP.

In ons scenario willen we het NodePort Service-type gebruiken omdat we zowel een openbaar als een privé IP-adres hebben en we voorlopig geen externe load balancer nodig hebben. Met dit servicetype wijst Kubernetes deze service toe aan poorten in het 30000+ bereik.

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

Voer de opdracht get svc uit om een samenvatting te zien van de service en de weergegeven poorten.

kubectl get svc

Nu kunt u verifiëren dat de Nginx pagina bereikbaar is op alle knooppunten met behulp van de curl-opdracht.

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

Zoals u kunt zien, is de pagina “WELCOME TO NGINX! ” bereikbaar.

Het bereiken van kortstondige OPENBARE IP-adressen

Zoals je misschien hebt gemerkt meldt Kubernetes dat ik geen actief openbaar IP-adres heb geregistreerd, of beter gezegd, geen EXTERN IP-adres.

kubectl get svc

Laten we eens kijken of het inderdaad waar is dat ik geen EXTERN IP-adres aan mijn interfaces heb gekoppeld met behulp van de IP-opdracht.

ip a

Geen openbaar IP-adres zoals u kunt zien.

Zoals eerder vermeld voer ik deze implementatie momenteel uit op een virtuele machine die wordt aangeboden door een openbare cloudprovider. Dus hoewel er geen specifieke interface is toegewezen aan een openbaar IP-adres, heeft de VM-provider een kortstondig extern IP-adres uitgegeven.

Een kortstondig extern IP-adres is een tijdelijk IP-adres dat aan de VM gekoppeld blijft totdat de virtuele instantie wordt gestopt. Wanneer de virtuele instantie opnieuw wordt opgestart, wordt een nieuw extern IP-adres toegewezen. Kortom, het is een eenvoudige manier voor serviceproviders om gebruik te maken van inactieve openbare IP’s.

De uitdaging hier, afgezien van het feit dat uw publieke IP niet statisch is, is dat het Ephemeral Public IP eenvoudigweg een verlengstuk (of proxy) is van het Private IP, en om die reden zal de service alleen toegankelijk via poort 30386. Dat betekent dat de service toegankelijk is via de URL , dat wil zeggen 104.197.170.99:30386, wat als u dit aanvinkt uw browser, zou u de welkomstpagina moeten kunnen zien.

Daarmee hebben we met succes NGINX geïmplementeerd op ons Kubernetes-cluster met 3 knooppunten.