Kubernetes

Nasazení aplikací do klastrů Kubernetes

Nasazení aplikací do klastrů Kubernetes

V předchozím článku jsme nasadili Kubernetes Cluster s jedním hlavním a jedním pracovním uzlem. Klastry Kubernetes jsou hlavně o dvou věcech; Uzly a pody. Pods jsou kontejnerizované aplikace, které chcete nasadit na klastr, a uzly jsou jednotlivé výpočetní servery odpovědné za správu klastru nebo spouštění aplikací. Aby to bylo jednodušší, začneme s bezstavovou aplikací a představíme různé koncepty, jako jsou popisky a selektory, které se používají k vzájemné vazbě lusků.

Existují další důležité koncepty, jako jsou sady replik, služby a nasazení, které se v tomto článku naučíme.


Tradiční nasazení aplikace

Pokud se podíváte na tradiční přístup k nasazení webové aplikace, škálovatelnost je něco, co byste měli zvážit, než začnete. Pokud potřebujete databázi oddělenou od vašeho webového rozhraní, je lepší ji dělat hned teď, než ji dělat později. Plánujete provozovat více než jednu webovou aplikaci? Lepší konfiguraci serveru reverzní proxy předem.

S Kubernetes se přístup posunul. Nasazení lze provést s ohledem na aktuální potřeby a může být později škálováno s růstem vašeho podnikání. Kontejnerizace umožňuje oddělit základní součásti vašich webových služeb, i když běží na jednom uzlu. Později, když změníte horizontální měřítko (což znamená, že do svého prostředí přidáte více serverů), musíte jednoduše roztočit více kontejnerů a Kubernetes to naplánuje na příslušných uzlech pro vás.  Reverzní proxy? Služby Kubernetes přijdou vyřešit tento problém.


Pods

Jako první krok roztočme lusk. K tomu bychom potřebovali soubor YAML definující různé atributy podu.

apiVersion: v1
druh: Pod
metadata:
název: nginx
spec:
kontejnery:
- název: nginx
obrázek: nginx: 1.7.9
porty:
- containerPort: 80

Přidejte výše uvedený obsah do a lusk.yaml soubor a uložte jej. Při pohledu na výše uvedený text vidíte, že druh zdroje, který vytváříme, je lusk. Pojmenovali jsme to nginx, a obrázek je nginx: 1.7.9 což ve výchozím nastavení znamená, že Kubernetes načte příslušný obrázek nginx z veřejně dostupných obrázků centra Docker.

Ve velkých organizacích je K8 často konfigurován tak, aby ukazoval na soukromý registr, ze kterého může vytáhnout příslušné obrázky kontejneru.

Nyní spusťte běh pod:

$ kubectl create -f pod.yaml

Z pod clusteru nemůžete přistupovat k modulu. Dosud není vystavena a existuje pouze jako solitérní podložka. Chcete-li zajistit, že je skutečně nasazen, spusťte:

$ kubectl získat lusky

Chcete-li se zbavit pojmenovaného podu nginx, spusťte příkaz:

$ kubectl smazat pod nginx

Nasazení

Získání pouze jednoho funkčního modulu není cílem Kubernetes, v ideálním případě bychom chtěli více replik modulu, často naplánovaných na různých uzlech, takže pokud jeden nebo více uzlů selže, zbytek podů bude stále k dispozici zvýšit další pracovní zátěž.

Z hlediska vývoje bychom navíc potřebovali nějaký způsob, jak zavádět lusky s novější verzí softwaru a dělat starší lusky nečinnými. V případě, že je problém s novějším podem, můžeme se vrátit zpět tím, že přivedeme zpět starší lusky a odstraníme chybnou verzi. Nasazení nám to umožňuje.

Následuje velmi běžný způsob definování nasazení:

apiVersion: apps / v1beta1
druh: Nasazení
metadata:
name: nginx-deployment
spec:
repliky: 2
šablona:
metadata:
štítky:
aplikace: nginx
spec:
kontejnery:
- název: nginx
obrázek: nginx: 1.7.9
porty:
- containerPort: 80

Všimnete si mimo jiné páru klíč-hodnota, který je:

štítky:
aplikace:
nginx

Štítky jsou důležité pro správu klastrů, protože pomáhají při sledování velkého počtu lusků se stejnou povinností. Pods se vytvářejí na příkaz hlavního uzlu a komunikují s hlavním uzlem. Stále však potřebujeme efektivní způsob, jak spolu mluvit a spolupracovat jako tým.


Služby

Každý modul má svou vlastní interní adresu IP a komunikační vrstva, jako je Flannel, pomáhá modulům komunikovat mezi sebou. Tato IP adresa se však trochu mění a koneckonců celý smysl mít mnoho lusků je nechat je na jedno použití. Lusky jsou často zabíjeny a vzkříšeny.

Nyní vyvstává otázka - Jak budou front-endové lusky mluvit s back-endovými lusky, když jsou věci v clusteru tak dynamické?

Služby řeší tuto složitost. Služba je ještě další pod, který funguje jako nástroj pro vyrovnávání zatížení mezi podmnožinou lusků a zbytkem klastru Kubernetes. Váže se na všechny lusky, které mají k sobě připojený konkrétní štítek, například databázi, a poté je vystavuje pro zbytek clusteru.

Například pokud máme databázovou službu s 10 databázovými lusky, mohou některé z databázových lusků přijít nebo být zabity, ale služba by zajistila, že zbytek clusteru dostane ‚službu ', což je databáze. Služby lze také použít k vystavení front-endu zbytku internetu.

Zde je typická definice služby.

apiVersion: v1
druh: služba
metadata:
název: wordpress-mysql
štítky:
aplikace: wordpress
spec:
porty:
- port: 3306
volič:
aplikace: wordpress
úroveň: mysql
clusterIP: Žádný

Lusky označené WordPress se zadanou úrovní mysql jsou ty, které tato služba vyzvedne a vystaví luskům webového serveru pro typické nastavení WordPress provedené na Kubernetes.


Slovo opatrnosti

Při nasazování obří víceúrovňové aplikace zaměřené na velkou zákaznickou základnu je velmi lákavé psát spoustu služeb (nebo mikroslužeb, jak jsou všeobecně známé). I když se jedná o elegantní řešení pro většinu případů použití, věci se mohou rychle vymknout z rukou.

Služby, jako jsou lusky, jsou náchylné k selhání. Jediným rozdílem je, že když služba selže, mnoho podů, které jsou dokonale funkční, se stane nepoužitelnými. V důsledku toho, pokud máte velké propojení služeb (interních i externích) a něco selže, zjišťování bodu selhání by bylo nemožné.

Pravidlem je, že pokud máte hrubou vizualizaci klastru, nebo pokud můžete použít software jako kokpit k prohlédnutí klastru a jeho pochopení, vaše nastavení je v pořádku. Kubernetes je na konci dne navržen tak, aby snižoval složitost, nikoli ji vylepšoval.

Hry Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 vydané minulý měsíc, je šestým vývojovým vydáním v 1.13.série x a přináší řadu vylepšení, zejména do uživatelského rozhraní,...
Hry Jak nainstalovat League Of Legends na Ubuntu 14.04
Jak nainstalovat League Of Legends na Ubuntu 14.04
Pokud jste fanouškem League of Legends, pak je to pro vás příležitost otestovat běh League of Legends. Všimněte si, že LOL je podporován na PlayOnLinu...
Hry Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
OpenRA je herní engine Libre / Free Real Time Strategy, který obnovuje rané hry Westwood, jako je klasický Command & Conquer: Red Alert. Distribuované...