Kubernetes je open-sourcový systém na orchestraci kontejnerů pro automatický deployment, škálování a správu kontejnerizovaných aplikací. Původně byl navržen Googlem a nyní je spravován Cloud Native Computing Foundation. Jeho cílem je vytvořit platformu pro automatizovaný deployment, škálování a operace na aplikačních kontejnerech napříč klustry hostů. Funguje s širokou škálou kontejnerových nástrojů jako je například Docker.

Design

Kubernetes definuje sadu stavebních kamenů, takzvaných „primitives“, které kolektivně vytváří mechanismus, který zajišťuje deployment, správu a škálování aplikací. Kubernetes je volně navázaný a rozšířitelný, aby si dokázal poradit s různou zátěží. Tuto rozšiřitelnost z velké části umožňuje Kubernetes API, které používají interní komponenty stejně jako rozšíření a kontejnery, které přes Kubernetes běží.

Pody

Základní schedulovací jednotkou Kubernetes je pod. Přidává vyšší úroveň abstrakce tím, že seskupuje kontejnerizované komponenty. Pod obsahuje jeden nebo více kontejnerů, u kterých je garantováno, že jsou na stejné lokalitě na hostitelském stroji a mohou sdílet zdroje.

Každému podu je Kubernetes přiřazena unikátní IP adresa v rámci klusteru, která umožňuje aplikaci použití portů bez rizika konfliktů. Pod může definovat objem, například u lokálního úložiště nebo síťového disku a uvolnit jej kontejnerům spadajícím do podu. Pody mohou být spravovány manuálně skrze Kubernetes API nebo může jejich správa být delegována kontroleru.

Kontrolery

Kontroler je smyčka, která zajišťuje přechod stavu klusteru do požadovaného stavu. Toho docílí tak, že spravuje sadu podů. Jedním ze druhů kontrolerů je replikační kontroler, který spravuje replikaci a škálování tím, že spouští specifický počet kopií podu napříč klusterem. Také vytváří náhradní pody, pokud některý z uzlů selže.

Mezi další kontrolery, které jsou součástí jádra systému Kubernetes patří DaemonSet kontroler, který spouští přesně jeden pod na každém stroji (nebo podmnožině strojů) a Job kontroler, který spouští pody, které směřují k ukončení například v případě dávkových jobů. Sada podů, kterou kontroler spravuje je definovaná jejich štítky, které jsou součástí definice kontroleru.

Služby

Kubernetes služba je sada podů, které pracují společně. Tato skupina podů, které společně tvoří službu je definovaná štítkem.

Architektura

Kubernetes má architekturu na bázi řídícího stroje a otroků. Komponenty je pak možné rozdělit na ty, které spravují jednotlivý uzel a ty, které jsou součástí řídícího stroje. Řídící stroj je hlavní řídící jednotka klusteru, která spravuje jeho zátěž a řídí komunikaci napříč systémem. Skládá se z různých komponent, každá z nich má vlastní procesy, které mohou běžet na jednom řídícím uzlu nebo na více.

Výhody použití Kubernetes

  • Škálovatelnost. Kubernetes je volně navázaný a rozšiřitelný, tak aby si dokázal poradit s různou zátěží.
  • Jednoduchá správa kontejnerů. Kubernetes napomáhá redukovat zpoždění v komunikaci, což může při použití samotného Dockeru problém.
  • Práce s Microservices. Při práci s Microservices je možné použít libovolné množství živých replikací, což znamená, že pokud se projekt rozšiřuje, implementace změn není až tak náročná.
  • Dokumentace. Kubernetes má dostupnou odpovídající dokumentaci.

Nevýhody použití Kubernetes

  • Konfigurace. Konfigurace je relativně náročná a je potřeba si s ní již na úplném začátku pohrát. Trvá mnoho času, nežli se vhodnou konfiguraci podaří najít. Kubernetes se opravdu složitě instaluje a trvá mnoho času, než se podaří spustit.
  • Služby. Není snadní spravovat služby.
  • Dokumentace. Přestože je dokumentace dostupná, není příliš uživatelsky přívětivá.