Docker Swarm na steroidoch – aj takto by sa v skratke dal opísať systém na organizovanie kontajnerov Kubernetes (K8s). V 10-delnom seriáli, ktorý som napísal ako technical writer pre WebSupport, sa postupne venujem jednotlivým komponentom na základnej úrovni. Všetky časti si prečítate zdarma online.

Správca, uzly a pody

V 1. diele seriálu o Kubernetes stručne popisujem históriu projektu. Predstavil som architektúru a základné nástroje Kubernetes ako sú napríklad kube-api, kubelet či kube-proxy. Nakoniec som Kubernetes nainštaloval lokálne pomocou nástroja minikube, aby som mohol Kubernetes používať aj na bežne dostupnom počítači.

Nody, pody a služby

V 2. diele ukazujem, ako nainštalovať Kubernetes Cluster, ako spustiť Kubernetes Master Server a ako naň nasadiť sieť podov. Následne som pripojil uzly k spustenému serveru, na ktoré som nasadil službu – konkrétne webový server Nginx.

Job a deployment

V 3. diele som spustil jednoduchú úlohu (job) s jedným podom bez časového obmedzenia, a tiež s časovým obmedzením. Viacero podov som spustil pomocou nasadenia (deployment) a overil som jednu zo základných funkcií systému Kubernetes: rýchle spustenie podov, ktoré nahradia vypadnuté pody.

Node Affinity, Resource Requests a Limits

Vo 4. diele obmedzujem nasadenie podov iba na konkrétne nody za pomoci štítkov (labels), ktorými som označil požadovaný nod. Získal som tak lepšiu kontrolu nad zaťažovaním jednotlivých nodov. Rovnako som nastavil aj minimálne a maximálne využitie procesora (CPU) a operačnej pamäte (RAM). Predišiel som tak prípadnému výpadku podov, či celého Kubernetes Clustra.

Taints a Tolerations

V 5. diele som predstavil ďalší spôsob obmedzenia nasadenia podov iba na určité nody. Zatiaľčo pomocou sady pravidiel Node Affinity obmedzujem nasadenie podov označením nodov pomocou štítkov (Labels), v rámci druhej možnosti označujem nody pomocou Taint. V oboch prípadoch však dosiahnem podobný efekt a je na zvážení, ktorý spôsob pri nasadzovaní konkrétnych podov či celého deploymentu vyhovuje viac.

Storage pomocou emptyDir a hostPath

V 6. diele k podu pripájam interné úložisko (storage) pomocou mechanizmu emptyDir, ktorého obsah zostáva zachovaný, pokiaľ pod nevymažem. Externé úložisko zo systému súborov nodu som ku kontajneru pripojil pomocou mechanizmu hostPath, pričom som si overil, že aj po vymazaní nasadeného podu obsah pripojeného priečinka zostal zachovaný.

Rolling updates a Rollbacks

V 7. diele nasadený deployment aktualizujem bez akéhokoľvek výpadku. Tiež som demonštroval, ako sa v prípade chyby vrátiť do bodu, kedy všetko fungovalo správne – a to bez potreby reštartovania či vypnutia servera.

Sieť – Ingress a Egress

V 8. diele nastavujem pravidlá, podľa ktorých budú medzi sebou pody komunikovať, a tiež ako budú komunikovať s inými sieťami. Všetko za pomoci štítkov (labels) a možnosti druhu NetworkPolicy – konkrétne spôsob komunikácie typu ingress (smerom do podu) a egress (smerom von z podu).

Services

V 9. diele som nasadil deployment a následne vytvoril službu (service) typu NodePort a Load Balancer, vďaka ktorej som Kubernetes Cluster s nasadenými podmi otvoril do vnútornej siete cez IP adresu.

Helm – správca balíkov systému Kubernetes

V 10. (poslednom) diele seriálu o systéme Kubernetes vďaka správcovi balíkov Helm automatizujem nasadenie služieb komplexnej aplikácie (napr. webový server + databázový server + WordPress). Stačí iba chart (šablóna), ktorú si hotovú nájdem v repozitári a ostatné už zariadi Helm.

Zhrnuté a podčiarknuté, toto bol pre mňa jednoznačne najnáročnejší seriál, ktorý som kedy napísal. Poriadne som si zamakal, veľa som sa naučil, no a výsledok rozhodne stojí za to! 🙂


Comments

Vyjadrite váš názor v komentári…

Táto webová stránka používa Akismet na redukciu spamu. Získajte viac informácií o tom, ako sú vaše údaje z komentárov spracovávané.