Wéi deploy Nginx op engem Kubernetes Cluster


An eisem leschten Artikel hu mir diskutéiert wéi een e Kubernetes Cluster opstellt a leeft, loosst eis diskutéieren wéi mir NGINX Service op eisem Cluster ofsetzen.

Ech wäert dës Détachement op enger virtueller Maschinn lafen, déi vun engem ëffentleche Cloud Provider gehost gëtt. Wéi et mat villen ëffentleche Cloud Servicer ass, erhalen vill allgemeng en ëffentlechen a private IP Schema fir hir virtuell Maschinnen.

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

Deploy NGINX op engem Kubernetes Cluster

Mir lafen dës Deployment vum Master-Node aus.

Loosst eis ufänken mam Status vum Cluster ze kontrolléieren. All Är Node sollen an engem READY Staat sinn.

# kubectl get nodes

Mir kreéieren en Détachement vun NGINX mam NGINX Bild.

# kubectl create deployment nginx --image=nginx

Dir kënnt elo den Zoustand vun Ärem Détachement gesinn.

# kubectl get deployments

Wann Dir méi Detailer iwwer Ären Deployment wëllt gesinn, kënnt Dir de beschreiwen Kommando ausféieren. Zum Beispill ass et méiglech ze bestëmmen wéi vill Repliken vun der Deployment lafen. An eisem Fall erwaarden mir eng Replica vun 1 Lafen ze gesinn (dh 1/1 Replicas).

# kubectl describe deployment nginx

Elo ass Är Nginx Deployment aktiv, Dir wëllt vläicht den NGINX Service op eng ëffentlech IP erreechbar um Internet aussetzen.

Kubernetes bitt verschidde Méiglechkeeten wann Dir Äre Service aussetzt baséiert op enger Feature genannt Kubernetes Service-Typen a si sinn:

  1. ClusterIP - Dëse Service-Typ weist allgemeng de Service op enger interner IP aus, nëmmen am Cluster erreechbar, a méiglecherweis nëmmen an de Cluster-Noden.
  2. NodePort - Dëst ass déi elementarst Optioun fir Äre Service auszesetzen fir ausserhalb vun Ärem Cluster zougänglech ze sinn, op engem spezifesche Port (genannt den NodePort) op all Node am Cluster. Mir wäerten dës Optioun kuerz illustréieren.
  3. LoadBalancer - Dës Optioun profitéiert op externe Load-Balance Servicer, déi vu verschiddene Fournisseuren ugebuede ginn, fir Zougang zu Ärem Service z'erméiglechen. Dëst ass eng méi zouverlässeg Optioun wann Dir un héich Disponibilitéit fir Äre Service denkt, an huet méi Feature iwwer Standardzougang.
  4. ExternalName - Dëse Service féiert de Traffic redirect op Servicer ausserhalb vum Cluster. Als esou ass de Service also op en DNS Numm mapéiert deen aus Ärem Cluster gehost ka ginn. Et ass wichteg ze notéieren datt dëst keng Proxying benotzt.

De Standard Service-Typ ass ClusterIP.

An eisem Szenario wëlle mir den NodePort Service-Typ benotzen well mir souwuel eng ëffentlech wéi och eng privat IP Adress hunn a mir brauche fir de Moment keen externen Lastbalancer. Mat dësem Service-Typ gëtt Kubernetes dëse Service op Ports op der 30000+ Gamme zougewisen.

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

Run de get svc Kommando fir e Resumé vum Service an de Ports ausgesat ze gesinn.

# kubectl get svc

Elo kënnt Dir verifizéieren datt d'Nginx Säit op all Noden erreechbar ass mam Curl Kommando.

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

Wéi Dir gesitt, ass den \WELCOME TO NGINX! Säit kann erreecht ginn.

Wéi Dir vläicht gemierkt hutt, bericht de Kubernetes datt ech keng aktiv Ëffentlech IP registréiert hunn, oder éischter keng EXTERNAL-IP registréiert.

# kubectl get svc

Loosst eis z'iwwerpréiwen ob et wierklech stëmmt, datt ech keng EXTERNAL IP u meng Schnëttplazen verbonnen hunn mat IP Kommando.

# ip a

Keng ëffentlech IP wéi Dir kënnt gesinn.

Wéi virdru scho gesot, lafen ech de Moment dës Deployment op enger virtueller Maschinn, déi vun engem ëffentleche Cloud Provider ugebuede gëtt. Also, wärend et keng speziell Interface eng ëffentlech IP zougewisen ass, huet de VM Provider eng Ephemeral extern IP Adress erausginn.

Eng ephemeral extern IP Adress ass eng temporär IP Adress déi un der VM befestegt bleift bis déi virtuell Instanz gestoppt gëtt. Wann déi virtuell Instanz nei gestart gëtt, gëtt eng nei extern IP zougewisen. Prinzipiell ass et en einfache Wee fir Déngschtleeschter op idle ëffentlech IPs ze profitéieren.

D'Erausfuerderung hei, anescht wéi d'Tatsaach datt Är ëffentlech IP net statesch ass, ass datt déi Ephemeral Ëffentlech IP einfach eng Extensioun (oder Proxy) vun der Privat IP ass, an aus deem Grond gëtt de Service nëmmen um Hafen 30386 zougänglech. Dat heescht, datt de Service op der URL zougänglech ass, dat ass 104.197.170.99:30386, wat wann Dir Äre Browser iwwerpréift, Dir sollt d'Begréissungssäit gesinn.

Mat deem hu mir erfollegräich NGINX op eisem 3-Node Kubernetes Cluster ofgesat.