Začínáme s Kubernetes: Úvod pro začátečníky

Kubernetes se stal nejrozšířenějším open-source řešením pro automatizaci procesů spojených s vývojem kontejnerů.

Z nedávné studie Cloud Native Computing Foundation (CNCF) vyplývá, že 96 % organizací aktivně používá nebo zvažuje implementaci K8s. Ohromujících 5,8 milionu vývojářů po celém světě pracuje s Kubernetes, což odpovídá 31 % všech backend vývojářů.

Jeho popularita plyne z jeho schopnosti zlepšit škálovatelnost, dostupnost a urychlit procesy nasazování. Zatímco mnoho vývojářů začíná svou cestu s kontejnery pomocí Dockeru, nástroje spoléhajícího na příkazovou řádku, Kubernetes nabízí abstrakce vyšší úrovně. Umožňuje definovat aplikace a jejich infrastrukturu prostřednictvím schémat, která mohou být sdílená a na kterých lze spolupracovat.

Pokud s Kubernetes teprve začínáte, tento článek je navržen tak, aby vám pomohl s prvními kroky. Získáte přehled a informace, které vám usnadní začátek. Dozvíte se, jak Kubernetes může posunout vývoj vašich digitálních produktů na novou úroveň.

Co je Kubernetes a proč je potřebný?

Kubernetes je open-source orchestrátor, který automatizuje nasazování, škálování a správu kontejnerizovaných aplikací, a to včetně zajištění spolehlivosti a dostupnosti.

Představte si aplikaci, kterou máte kontejnerizovanou. Pro její uživatele potřebujete spustit několik instancí kontejnerů. Problémy nastávají ve chvíli, kdy potřebujete tyto kontejnery řídit a spravovat. Navíc, kontejnery nemusí běžet na stejném serveru, což celou situaci ještě komplikuje. Jak toto vyřešit?

Kubernetes vám s tím pomůže tím, že nabídne efektivní způsob, jak bezproblémově spravovat všechny tyto procesy. I když K8s můžete porovnávat s kontejnerovými enginy jako je Docker, je to především orchestrátor. Jako začínající vývojář se nemusíte starat o to, jak Kubernetes provádí orchestraci. Pro vaši aplikaci pravděpodobně nebudete nastavovat vlastní K8s cluster, o tom ale ještě později.

Budete však pracovat s clustery, které již váš infrastrukturní tým nastavil. Klíčové je seznámit se s objekty, se kterými budete pracovat. Než tak ale učiníte, je důležité se seznámit s jeho architekturou na vysoké úrovni, abyste pochopili, co se pod kapotou děje.

Funkce Kubernetes

Kubernetes nabízí širokou škálu funkcí pro provoz kontejnerů a další související infrastruktury. Následuje přehled hlavních funkcí:

  • Automatizované nasazování, škálování a rollback – K8s automatizuje vytváření určeného počtu replik aplikací, jejich distribuci na vhodný hardware a přeplánování kontejnerů v případě výpadku uzlu. Můžete dynamicky škálovat počet replik v závislosti na aktuální zátěži nebo měnících se požadavcích.
  • Zjišťování služeb, vyvažování zátěže a síťování – Kubernetes poskytuje komplexní řešení pro síťování, včetně zjišťování vnitřních služeb a zpřístupňování kontejnerů veřejně.
  • Aplikace se stavem i bez stavu – Původně se K8s zaměřoval hlavně na bezstavové kontejnery. Nicméně s rozvojem technologií nyní zahrnuje vestavěné objekty pro stavové aplikace. V podstatě, na Kubernetes může běžet libovolná aplikace.
  • Řízení úložiště – Ať už používáte lokální systém souborů, síťové disky nebo cloudové úložiště, Kubernetes abstrahuje trvalé úložiště pro aplikace běžící v kontejnerech. Tato abstrakce umožňuje definovat požadavky na úložiště bez ohledu na základní infrastrukturu. I když to přesahuje rámec tohoto článku, funguje to na základě principů jako Persistent Volume (PV), Persistent Volume Claim (PVC), Storage Classes a Volume Plugins.
  • Deklarativní stav – Kubernetes používá YAML soubory (objektové manifesty) pro definici požadovaného stavu clusteru. Tyto manifesty určují, jak má váš cluster vypadat, včetně požadovaných instancí aplikací, síťových pravidel a dalších konfigurací. K8s automaticky zpracuje všechny přechody stavů na základě těchto manifestů, čímž eliminuje nutnost psát skripty.
  • Podpora různých prostředí – Kubernetes není omezen pouze na cloudové prostředí nebo vaši vývojářskou stanici. Existuje mnoho distribucí, které vyhovují různým případům použití. Všichni hlavní poskytovatelé cloudových služeb jako Amazon Web Services, Google Cloud a Microsoft Azure nabízejí spravované služby Kubernetes. Zároveň jsou pro lokální použití dostupné distribuce jako Minikube a K3s.
  • Rozšiřitelnost – K8s je platforma s mnoha funkcemi. Navíc si můžete její schopnosti ještě vylepšit pomocí rozšíření. Můžete si vytvářet vlastní typy objektů, operátory a kontrolery a tím optimalizovat vaše pracovní postupy.

Architektura Kubernetes

Architektura Kubernetes se skládá z jednoho hlavního uzlu a několika pracovních uzlů. Hlavní uzel řídí celý cluster, zatímco pracovní uzly spouštějí aplikace na základě rozhodnutí hlavního uzlu.

Zdroj: kubernetes.io

Podrobnější popis:

Hlavní uzel(y)

Hlavní uzel určuje stav clusteru a rozhoduje o akcích jednotlivých uzlů. K nastavení hlavního uzlu je potřeba několik procesů:

  • API server
    Zprostředkovává veškerou komunikaci v clusteru. Je to vstupní brána, která umožňuje všem komponentám clusteru vyměňovat si informace. Zveřejňuje Kubernetes API a plní dvě hlavní role. První je vstupní bod, který uživatelům umožňuje interakci s clusterem. Například odesílání požadavků při použití Kubectl. Druhou rolí je ověřování a autorizace požadavků, kde jsou omezená oprávnění pouze pro specifické uživatele.
  • Plánovač
    Plánovač přiděluje aplikace (objekty pracovní zátěže Kubernetes) na konkrétní pracovní uzly. Umisťuje pody na uzly na základě požadavků na zdroje. (Pody jsou nejmenší jednotkou nasazení v Kubernetes.)
  • Správce kontroleru
    Tato komponenta udržuje cluster v požadovaném stavu. Sleduje selhání uzlů a udržuje požadovaný počet podů. Detekuje změny stavu clusteru, jako je výpadek podů, a snaží se obnovit systém do původního stavu. Pokud pod například nečekaně selže, správce kontroleru požádá plánovač, aby vybral uzel pro spuštění nového podu jako náhradu. Kubelet následně spustí nový pod.
  • etcd
    Nazývá se také „mozek“ clusteru. Jedná se o úložiště klíč-hodnota pro konfiguraci clusteru. Zde se ukládají všechny změny clusteru. Cluster můžete zálohovat uložením distribuovaného úložiště klíč-hodnota. Je důležité poznamenat, že se zde ukládají pouze data o stavu clusteru, nikoli data aplikací. Tato komponenta je určena pro uchovávání stavu clusteru a umožňuje ostatním procesům sledovat stav clusteru.

Pracovní uzel(y)

Každý pracovní uzel je vybaven třemi uzlovými procesy, které umožňují K8s komunikovat s ním a spouštět pody na každém uzlu. Jedná se o:

  • Kubelet
    Primární služba Kubernetes, která spouští kontejnerovou vrstvu. Bez této komponenty by Kubernetes nebyl nic víc, než REST API spojené s úložištěm klíč-hodnota. Ve výchozím stavu K8s spouští kontejnerovou aplikaci. Kontejnery jsou vždy izolované od sebe navzájem a od hostitelského systému. To se ukazuje jako velmi praktické pro oddělení správy jednotlivých aplikací jak od sebe, tak od fyzické či virtuální infrastruktury.

    I když řízení přístupu k API může zamítnout nebo přidat další omezení, kubelet má konečnou autoritu nad tím, jaké pody běží na daném uzlu. Ne plánovač, ani démonické sady. Kubelet interaguje s uzlem a kontejnerem. Přijímá konfigurační soubory a spouští pody pomocí kontejnerového runtime prostředí.

  • Kontejnerové runtime prostředí
    Tato komponenta je zodpovědná za spouštění kontejnerů. Můžete použít Docker, rkt nebo containerd.
  • Kube-proxy
    Poskytuje abstrakční vrstvu pro skupiny podů na základě společných pravidel, jako je vyvažování zátěže. Všechny uzly používají Kube-proxy pro poskytování virtuální IP adresy pro klienty přistupující k dynamickým podům. Tato architektura je řešením pro vyvažování zátěže a zajišťuje vysoký výkon.

Jak funguje kontejnerizace

Kontejnerizace virtualizuje všechny nezbytné komponenty softwarové aplikace do jediného balíčku. Kontejner obsahuje knihovny, binární soubory a veškeré konfigurace potřebné pro aplikaci. Nezahrnuje však zdroje jádra ani virtualizovaný hardware.

Kontejnery „běží na“ kontejnerovém runtime prostředí, které se stará o přidělování zdrojů. Díky tomu, že kontejnery obsahují pouze nezbytné komponenty a závislosti, jsou lehčí a rychlejší než klasické virtuální stroje.

Přečtěte si také: Kontejnery vs. virtuální stroje: Porovnání rozdílů

Jak nainstalovat a nastavit Kubernetes

Po teorii se nyní podíváme na praktické aspekty práce s kontejnery. Tento tutoriál se zaměří na instalaci v operačním systému Windows.

Existuje několik způsobů, jak provést instalaci ve Windows. Můžete použít příkazový řádek nebo grafické uživatelské rozhraní. Nejdříve se ale ujistěte, že váš systém splňuje minimální specifikace.

Pro hardware je potřeba minimálně 2GB RAM pro hlavní uzel a 700MB pro pracovní uzel. Ze softwaru budete potřebovat Hype-v, Docker pro stolní počítače, unikátní MAC adresu a unikátní UUID produktu pro každý uzel. Následuje podrobný postup.

Instalace a nastavení Hyper-V

Hyper-V je výchozí virtualizační software pro Windows. V podstatě je to VirtalBox na steroidech. Umožňuje vám spravovat virtuální stroje pomocí grafického rozhraní Microsoft GUI nebo příkazového řádku. Pro aktivaci Hyper-V postupujte následovně:

  • Otevřete Ovládací panely.
  • V levém panelu klikněte na „Programy“.
  • Na stránce „Programy a funkce“ klikněte na „Zapnout nebo vypnout funkce systému Windows“.
  • Vyberte položky Hyper-V a Hypervisor pro Windows.
  • Klikněte na „OK“. Váš počítač se restartuje, aby se aktivovala nová nastavení.

Někdy se počítač může několikrát restartovat, aby se ujistil, že je vše správně nakonfigurováno. Úspěšnost instalace si můžete ověřit zadáním následujícího příkazu v prostředí Power Shell.

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

Ověřte, že se vám zobrazuje stav „povoleno“.

Instalace Dockeru

Jak jsme si vysvětlili, K8s je nástroj pro orchestraci kontejnerů, proto potřebujete mít nainstalovaný Docker. K8s komunikuje s Dockerem a řídí všechny aspekty na podnikové úrovni. Stáhněte si Docker pro Windows. Pokud vás zajímá, proč používat Docker Desktop, je preferován pro zjednodušení vývoje, dopravy a spouštění dockerizovaných (kontejnerizovaných) aplikací.

Je to také nejrychlejší způsob, jak vytvářet aplikace Docker ve Windows pomocí Hyper-V a síťování. Po úspěšné instalaci je Docker vždy přístupný na jakémkoli terminálu. Detailní návod k instalaci najdete v oficiální dokumentaci Dockeru. Pokud po instalaci narazíte na nějaké problémy, jako jsou skryté ikony, problém může vyřešit restart počítače.

Instalace Kubernetes

Docker GUI umožňuje konfigurovat nastavení, instalovat a povolit Kubernetes. Pro instalaci K8s postupujte následovně:

  • Klikněte pravým tlačítkem na ikonu Docker a vyberte „Vlastnosti“.
  • Po kliknutí na „Vlastnosti“ vyberte z rozbalovací nabídky „Nastavení“.
  • V levém panelu vyberte „Kubernetes“ a klikněte na „Použít“.

Docker nainstaluje další balíčky a závislosti. Proces trvá zhruba pět až deset minut v závislosti na rychlosti vašeho internetu. Pomocí aplikace Docker můžete potvrdit, že vše funguje správně.

Vzhledem k tomu, že aplikace Kubernetes se nasazují pomocí CLI, může být nutné nainstalovat dashboard K8s. Ve výchozím stavu není nainstalovaný. Nainstalujte ho podle následujících kroků:

  • Stáhněte si konfiguraci YAML.
  • Nasaďte aplikaci pomocí tohoto kódu: `kubectl apply -f .yaml`.
  • Ověřte, že je vše správně nastaveno: `kubectl get -f .yaml`.

Pro přístup k dashboardu spusťte následující příkaz v Power Shell (ne CMD):

  • Spusťte následující kód `((kubectl -n kube-system describe secret default | Select-String „token:“) -split “ +“ )[1]
    • Zkopírujte vygenerovaný token a spusťte `kubectl proxy`.
  • V prohlížeči otevřete tento odkaz.
  • Klikněte na „Token“ a vložte sem svůj token.
  • Přihlaste se.

Pokud jste se dostali až sem, gratuluji! Měli byste mít přístup k dashboardu K8s. Nyní můžete spravovat aplikace bez nutnosti používání CLI.

Přečtěte si také: Jak nainstalovat Kubernetes na Ubuntu 18

Jak vytvořit a spravovat Kubernetes cluster

Pokud jste se dostali až sem, měli byste úspěšně nainstalovat Kubernetes na váš počítač. Nyní se podíváme na kroky pro vytvoření a základní správu clusteru:

  • Konfigurace sítě – Je nutné nastavit sítě mezi uzly clusteru, aby mohly vzájemně komunikovat.
  • Nastavení ověřování clusteru – Vytvořte mechanismy pro ověřování a autorizaci přístupu ke clusteru.
  • Nastavení hlavních komponent: API server, plánovač a správce řadiče.
  • Připojit pracovní uzly – Připojte pracovní uzly ke clusteru pomocí konfiguračních souborů poskytnutých procesem nastavení clusteru.
  • Nasadit doplňky – Můžete nainstalovat rozšíření pro vylepšení funkcionality clusteru.
  • Správa úloh – Je čas nasadit vaše aplikace.

Toto je pouze obecný přehled procesu vytváření clusteru, který zahrnuje mnoho kroků a příkazů. Detailní informace najdete v oficiální dokumentaci. Měla by to být vaše hlavní příručka.

Jak nasadit svou první aplikaci pomocí Kubernetes

Nejběžnější příkaz při používání K8s je `kubectl action resource`, který vám umožňuje provádět specifické akce, jako je vytváření nebo odstraňování specifikovaných zdrojů.

Pokud máte problémy, můžete použít ` –help` po konkrétním dílčím příkazu a získat tak další informace.

Například: `kubectl get nodes –help`. Pro nasazení vaší první aplikace v K8s použijte příkaz: `kubectl create deployment kubernetes-bootcamp –image=gcr.io/google-samples/kubernetes-bootcamp:v1`.

Závěrečná slova

Tato příručka vám posloužila jako úvod do technologie Kubernetes. Seznámili jste se s výhodami, funkcemi a architekturou. Snad jste také použili několik externích zdrojů pro získání detailnějších informací o tom, jak Kubernetes funguje.

I když se může zdát na první pohled náročné pochopit celý technologický stack, tento článek poskytl úvodní průvodce pro začátečníky. Budete potřebovat praxi, abyste si byli jistí používáním této technologie. Proto vám doporučuji používat oficiální dokumentaci Kubernetes jako vaši průběžnou referenci. Čím více budete cvičit, tím rychleji se stanete expertem na K8s.

Dále si můžete prohlédnout další tutoriály Kubernetes pro začátečníky.