Kubernetes

Nasadzovanie aplikácií do klastrov Kubernetes

Nasadzovanie aplikácií do klastrov Kubernetes

V predchádzajúcom článku sme nasadili klaster Kubernetes s jedným hlavným a jedným pracovným uzlom. Klastre Kubernetes sú hlavne o dvoch veciach; Uzly a pody. Pody sú kontajnerové aplikácie, ktoré chcete nasadiť do klastra, a uzly sú jednotlivé výpočtové servery zodpovedné za správu klastra alebo za spustenie aplikácií. Aby sme to zjednodušili, začíname bezstavovou aplikáciou a predstavujeme rôzne koncepty, ako sú štítky a selektory, ktoré sa používajú na vzájomné viazanie podov.

V tomto článku sa dozvieme ďalšie dôležité koncepty, ako sú sady replík, služby a nasadenia.


Tradičné nasadenie aplikácií

Ak sa pozriete na tradičný prístup k nasadeniu webovej aplikácie, škálovateľnosť je niečo, čo by ste mali zvážiť pred začiatkom. Ak potrebujete databázu oddelenú od webového rozhrania, je lepšie ju robiť práve teraz, ako ju robiť neskôr. Plánujete spustiť viac ako jednu webovú aplikáciu? Lepšiu konfiguráciu servera reverzného proxy vopred.

S Kubernetesom sa prístup posunul. Nasadenie je možné vykonať s ohľadom na súčasné potreby a neskôr ho možno rozšíriť podľa toho, ako bude vaše podnikanie rásť. Kontejnerizácia vám umožňuje oddeliť základné komponenty vašich webových služieb, aj keď sú spustené na jednom uzle. Neskôr, keď budete škálovať horizontálne (čo znamená, že do svojho prostredia pridáte viac serverov), musíte jednoducho roztočiť viac kontajnerov a program Kubernetes to naplánuje na príslušné uzly pre vás.  Reverzný proxy? Na vyriešenie tohto problému by prišli služby spoločnosti Kubernetes.


Pods

Ako prvý krok roztočíme tobolku. Aby sme to mohli urobiť, potrebovali by sme súbor YAML definujúci rôzne atribúty modulu.

apiVersion: v1
druh: Pod
metadáta:
meno: nginx
spec:
kontajnery:
- meno: nginx
obrázok: nginx: 1.7.9
prístavy:
- containerPort: 80

Pridajte vyššie uvedený obsah do a pod.yaml súbor a uložte ho. Pri pohľade na text vyššie môžete vidieť, že milý zdroja, ktorý vytvárame, je pod. Pomenovali sme to nginx, a obraz je nginx: 1.7.9 čo v predvolenom nastavení znamená, že Kubernetes načíta príslušný obrázok nginx z verejne dostupných obrázkov centra Docker.

Vo veľkých organizáciách je K8 často nakonfigurovaný tak, aby ukazoval na súkromný register, z ktorého môže získavať príslušné obrázky kontajnerov.

Teraz spustite beh podu:

$ kubectl create -f pod.yaml

Z pod klastra nemáte prístup k modulu. Zatiaľ nie je vystavený a existuje iba ako solitérny modul. Aby ste sa uistili, že je skutočne nasadený, spustite:

$ kubectl získať struky

Ak sa chcete zbaviť puzdra s názvom nginx, spustite príkaz:

$ kubectl zmazať pod nginx

Nasadenia

Získanie iba jedného fungujúceho modulu nie je predmetom Kubernetes, čo by sme v ideálnom prípade chceli, aby bolo viac replík modulu, ktoré sú často naplánované na rôznych uzloch, takže ak jeden alebo viac uzlov zlyhá, zvyšok podov bude stále k dispozícii zvýšiť ďalšie pracovné zaťaženie.

Z hľadiska vývoja by sme navyše potrebovali nejaký spôsob, ako zaviesť pody s novšou verziou softvéru a urobiť staršie pody nečinnými. V prípade, že sa vyskytne problém s novším podom, ktorý môžeme vrátiť späť, prinesieme späť staršie pody a odstránime neúspešnú verziu. Nasadenie nám to umožňuje.

Toto je veľmi častý spôsob definovania nasadenia:

apiVersion: apps / v1beta1
druh: Nasadenie
metadáta:
názov: nasadenie nginx
spec:
repliky: 2
šablóna:
metadáta:
štítky:
aplikácia: nginx
spec:
kontajnery:
- meno: nginx
obrázok: nginx: 1.7.9
prístavy:
- containerPort: 80

Okrem iného si všimnete pár kľúč - hodnota, ktorý je:

štítky:
aplikácia:
nginx

Štítky sú dôležité pre správu klastrov, pretože pomáhajú pri sledovaní veľkého počtu toboliek, ktoré majú všetky rovnaké povinnosti. Pods sa vytvárajú na príkaz hlavného uzla a komunikujú s hlavným uzlom. Stále však potrebujeme efektívny spôsob, ako spolu komunikovať a spolupracovať ako tím.


Služby

Každý modul má svoju vlastnú internú adresu IP a komunikačná vrstva, ako je Flannel, pomáha modulom navzájom komunikovať. Táto IP adresa sa však dosť mení a koniec koncov, celá podstata toho, aby sme mali veľa podov, je nechať ich na jedno použitie. Pody sú často zabíjané a vzkriesené.

Otázka, ktorá teraz vyvstáva, je táto - Ako budú front-endové pody hovoriť s back-endovými pods, keď sú veci v klastri také dynamické?

Služby prichádzajú na rad s cieľom vyriešiť túto zložitosť. Služba je ďalším podom, ktorý funguje ako nástroj na vyrovnávanie zaťaženia medzi podmnožinou podov a zvyškom klastra Kubernetes. Naviaže sa na všetky pody, ktoré majú k sebe pripojený konkrétny štítok, napríklad na databázu, a potom ich vystaví pre zvyšok klastra.

Napríklad ak máme databázovú službu s 10 databázovými modulmi, môžu niektoré databázové moduly prísť alebo sa môžu zabiť, ale táto služba zabezpečí, že zvyšok klastra dostane „službu“, ktorou je databáza. Služby možno tiež použiť na vystavenie klientskeho rozhrania zvyšku internetu.

Tu je typická definícia služby.

apiVersion: v1
druh: služba
metadáta:
názov: wordpress-mysql
štítky:
aplikácia: wordpress
spec:
prístavy:
- port: 3306
selektor:
aplikácia: wordpress
vrstva: mysql
clusterIP: Žiadne

Lusky označené WordPress so zadanou úrovňou mysql sú tie, ktoré táto služba vyzdvihne a vystaví luskom webového servera pre typické nastavenie WordPress vykonané na Kubernetes.


Slovo opatrnosti

Pri nasadení obrovskej viacúrovňovej aplikácie zameranej na veľkú spotrebiteľskú základňu je veľmi lákavé napísať množstvo služieb (alebo mikroslužieb, ako sú všeobecne známe). Aj keď ide o elegantné riešenie pre väčšinu prípadov použitia, veci sa môžu rýchlo vymknúť z rúk.

Služby, ako sú pody, sú náchylné na zlyhanie. Jediný rozdiel je v tom, že keď služba zlyhá, veľa podov, ktoré sú dokonale funkčné, sa stane nepoužiteľnými. Ak máte veľké prepojenie služieb (interných aj externých) a niečo zlyhá, zistenie bodu zlyhania by bolo nemožné.

Ako pravidlo platí, že ak máte hrubú vizualizáciu klastra alebo ak na jeho prehliadanie môžete použiť softvér ako kokpit, vaše nastavenie je v poriadku. Kubernetes je na konci dňa navrhnutý tak, aby komplexnosť znižoval, nie vylepšoval.

Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
Battle for Wesnoth je jednou z najpopulárnejších open source strategických hier, ktoré si v súčasnosti môžete zahrať. Táto hra bola nielen vyvinutá ve...
Hry 0 A.D. Výukový program
0 A.D. Výukový program
Z mnohých strategických hier je tu 0 A.D. dokáže vyniknúť ako komplexný titul a veľmi hlboká, taktická hra napriek tomu, že je otvoreným zdrojom. Vývo...
Hry Výukový program pre Unity3D
Výukový program pre Unity3D
Úvod do Unity 3D Unity 3D je výkonný nástroj na vývoj hier. Je to multiplatforma, ktorá vám umožňuje vytvárať hry pre mobilné telefóny, web, počítače ...