Vyhledávání na webu

Jak nasadit Nginx na clusteru Kubernetes


V našem posledním článku jsme diskutovali o tom, jak nastavit a spustit cluster Kubernetes, pojďme diskutovat o tom, jak můžeme na našem clusteru nasadit službu NGINX.

Toto nasazení spustím na virtuálním počítači hostovaném veřejným poskytovatelem cloudu. Jak je tomu u mnoha veřejných cloudových služeb, mnoho z nich obecně udržuje veřejné a soukromé schéma IP pro své virtuální stroje.

Testovací prostředí

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

Nasazení NGINX na clusteru Kubernetes

Toto nasazení spustíme z hlavního uzlu.

Začněme kontrolou stavu clusteru. Všechny vaše uzly by měly být ve stavu READY.

kubectl get nodes

Vytváříme nasazení NGINX pomocí obrázku NGINX.

kubectl create deployment nginx --image=nginx

Nyní můžete vidět stav vašeho nasazení.

kubectl get deployments

Pokud byste chtěli vidět více podrobností o svém nasazení, můžete spustit příkaz describe. Je například možné určit, kolik replik nasazení běží. V našem případě očekáváme, že uvidíme repliku 1 spuštěné (tj. 1/1 repliky).

kubectl describe deployment nginx

Nyní je vaše nasazení Nginx aktivní, možná budete chtít vystavit službu NGINX veřejné IP adrese dostupné na internetu.

Vystavení vaší služby Nginx veřejné síti

Kubernetes nabízí několik možností při odhalování vaší služby na základě funkce zvané Kubernetes Service-types a jsou to:

  1. ClusterIP – Tento typ služby obecně zpřístupňuje službu na interní IP, která je dostupná pouze v rámci clusteru a možná pouze v rámci uzlů clusteru.
  2. NodePort – Toto je nejzákladnější možnost, jak zpřístupnit vaši službu mimo váš cluster, na konkrétním portu (nazývaném NodePort) na každém uzlu v clusteru. Tuto možnost si krátce ukážeme.
  3. LoadBalancer – Tato možnost využívá externí služby vyrovnávání zátěže nabízené různými poskytovateli a umožňuje přístup k vaší službě. Toto je spolehlivější možnost, když uvažujete o vysoké dostupnosti vaší služby, a má více funkcí než výchozí přístup.
  4. ExternalName – Tato služba přesměrovává provoz na služby mimo cluster. Služba je tedy mapována na název DNS, který by mohl být hostován mimo váš cluster. Je důležité si uvědomit, že toto nepoužívá proxy.

Výchozí typ služby je ClusterIP.

V našem scénáři chceme použít typ služby NodePort, protože máme veřejnou i soukromou IP adresu a prozatím nepotřebujeme externí nástroj pro vyrovnávání zatížení. S tímto typem služby Kubernetes přiřadí tuto službu na portech v rozsahu 30 000+.

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

Spuštěním příkazu get svc zobrazíte souhrn služby a vystavených portů.

kubectl get svc

Nyní můžete pomocí příkazu curl ověřit, zda je stránka Nginx dostupná na všech uzlech.

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

Jak vidíte, stránka „VÍTEJTE V NGINX!“ je přístupná.

Dosahování pomíjivých VEŘEJNÝCH IP adres

Jak jste si mohli všimnout, Kubernetes hlásí, že nemám zaregistrovanou žádnou aktivní veřejnou IP, nebo spíše žádnou EXTERNÍ IP.

kubectl get svc

Pojďme si ověřit, zda je skutečně pravda, že nemám ke svým rozhraním připojenou žádnou EXTERNÍ IP pomocí příkazu IP.

ip a

Žádná veřejná IP, jak vidíte.

Jak již bylo zmíněno dříve, v současné době spouštím toto nasazení na virtuálním počítači nabízeném poskytovatelem veřejného cloudu. I když tedy není žádné konkrétní rozhraní přiřazeno veřejné IP, poskytovatel virtuálního počítače vydal dočasnou externí IP adresu.

Dočasná externí IP adresa je dočasná IP adresa, která zůstává připojena k virtuálnímu počítači, dokud není virtuální instance zastavena. Když je virtuální instance restartována, je přiřazena nová externí IP. V zásadě jde o jednoduchý způsob, jak poskytovatelé služeb využít nečinné veřejné IP adresy.

Výzva, kromě skutečnosti, že vaše veřejná IP není statická, spočívá v tom, že Ephemeral Public IP je prostě rozšíření (nebo proxy) soukromé IP, a z tohoto důvodu bude služba přístup pouze na portu 30386. To znamená, že služba bude přístupná na adrese URL , tedy 104.197.170.99:30386, což, pokud zaškrtnete v prohlížeči, měli byste vidět uvítací stránku.

Díky tomu jsme úspěšně nasadili NGINX na našem 3uzlovém clusteru Kubernetes.