Začátky kontejnerizace s Kubernetes | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Začátky kontejnerizace s Kubernetes

Začátky kontejnerizace s Kubernetes

Přehledný průvodce K8s pro vývojáře, testery a DevOps týmy

Open-source platforma Kubernetes (zkráceně K8s) se stala standardem pro orchestraci a správu kontejnerů. Vývojářům umožňuje snadno nasazovat, škálovat a spravovat kontejnerové aplikace. To z K8s činí důležitý nástroj pro vývoj a nasazování moderních aplikací. Po přečtení článku budeš mít základní povědomí o tomto nástroji.

Co je to kontejnerizace

Než se blíže podíváme na K8s, je potřeba si vysvětlit jeden důležitý pojem. Kontejnery jsou lehké přenosné jednotky, které balí aplikaci spolu s jejími závislostmi a běhovým prostředím.

Význam Kubernetes

Význam Kubernetes spočívá v tom, že poskytuje jednotnou platformu pro automatizaci, správu a škálování aplikací. Díky tomu mohou firmy dosahovat vyšší efektivity a agility v procesu developmentu. To vede ke snížení nákladů na vývoj a k usnadnění uvedení aplikace na trh. K8s pomáhá udržet krok v rámci vývoje v digitálním prostředí.

Kubernetes navíc nabízí robustní bezpečnostní funkce, které zajišťují ochranu aplikací před potenciálními hrozbami a zranitelnostmi. Aktivní komunita a rozsáhlý ekosystém tak poskytuje přístup k množství zdrojů, nástrojů a služeb, které pomáhají neustále zlepšovat a zdokonalovat aplikace.

Přehled architektury a komponentů K8s

Cluster K8s se skládá ze sady zařízení známých jako nody, na kterých běží kontejnerové aplikace. Každý cluster má alespoň jeden pracovní node, na němž jsou umístěny pody, které jsou součástí aplikační úlohy. Abys to lépe pochopil*a, je potřeba se seznámit s funkcemi v architektuře a komponentech Kubernetes.

Architektura Kubernetes

  • Master je zodpovědný za zpřístupnění aplikačního programového rozhraní (API), plánování nasazení a správu celého clusteru.
  • Server API provádí všechny správní úlohy prostřednictvím serveru API v hlavním nodu.
  • Nodes jsou součástí hlavního serveru. Jedná se o fyzický server, který má v sobě pody, jež jsou zodpovědné za běh aplikací uvnitř nich.
  • Pod je jeden nebo více kontejnerů, které logicky patří k sobě. V jednom nodu je více podů a všechny sdílejí stejný obsah.
  • Scheduler plánuje úlohy do pracovních nodů. Ukládá informace o využití prostředků pro každý podřízený node.
  • Controller Manager má za úkol sledovat požadovaný stav objektů, které spravuje, a udržovat jejich aktuální stav v souladu s tímto požadavkem prostřednictvím API serveru. Pokud zjistí, že aktuální stav spravovaných objektů nesplňuje požadovaná kritéria, zahájí řídicí smyčka nápravné kroky, aby zajistila shodu aktuálního stavu s požadovaným.
  • ETCD je distribuované úložiště typu key-value, které slouží k uchovávání stavu clusteru. Kromě toho se používá pro ukládání konfiguračních detailů, jako jsou podsítě, ConfigMaps, Secrets a další. Toto úložiště může být integrováno přímo do Kubernetes Master nebo konfigurováno jako externí služba.
  • Container Runtime je spuštěn a spravuje životní cyklus kontejneru na pracovním nodu.
  • Kubelet je agent, který se spouští na pracovních nodech a slouží k vytvoření a provozování kontejnerů. Jeho úkolem je komunikovat s Master node, od kterého získává specifikace podů prostřednictvím API serveru. Následně spouští kontejnery přiřazené k daným podům a zajišťuje, aby tyto kontejnery fungovaly dobře.
  • Kube-Proxy je komponenta, která běží na každém nodu v Kubernetes clusteru. Jeho hlavním úkolem je zajištění komunikace a dostupnosti služeb v rámci clusteru i pro externí klienty. Toho dosahuje tak, že pro každý koncový bod služby vytváří trasy, které umožňují plynulý přístup k těmto službám.

Kubernetes komponenty

  • Ingress je objekt API, který zpřístupňuje trasy HTTP a HTTPS z vnějšku clusteru pro přístup ke službám uvnitř clusteru.
  • NodePort je otevřený port na každém node clusteru. Kubernetes transparentně směruje příchozí provoz na NodePort na tvoji službu, i když tvoje aplikace běží na jiném uzlu.
  • LoadBalancer je typ služby v Kubernetes, který automaticky vytváří externí load balancer. Ten je pak spojen s určitou IP adresou, přes kterou může směrovat externí internetový provoz přímo do služby běžící v Kubernetes clusteru.
  • Ingress Controller je zodpovědný za načítání informací o vstupních prostředcích a za správné zpracování těchto dat. Jednoduše přidává další vrstvu směrování a řízení za load balancer.
  • Replica Sets zajišťuje, kolik replik podů má být v daném okamžiku spuštěno. Často se používá k zaručení dostupnosti určitého počtu identických podů. Svůj účel plní vytvářením a odstraňováním podů podle potřeby, aby bylo dosaženo požadovaného počtu.
  • ConfigMaps and Secrets při spuštění kontejneru v K8s vkládá konfigurační data. Secrets jsou primárně určeny pro uložení citlivých informací v malém množství, jako je například heslo administrátora databáze 'MYSQL_ROOT_PASSWORD'. Na druhou stranu ConfigMaps slouží pro uložení veřejných dat, včetně konfiguračních souborů a proměnných prostředí, což usnadňuje správu aplikací běžících v clusteru.
  • Service je objekt REST a abstraktní způsob, jak vystavit aplikaci běžící na sadě podů jako síťovou službu. Díky K8s nemušíš upravovat aplikaci, aby používala neznámý mechanismus zjišťování služeb. Kubernetes dává podům jejich vlastní IP adresy a jediný název DNS pro sadu podů a vyrovnává mezi nimi zátěž.

Deployments 

Umožňují aktualizovat pody a sady ReplicaSet. Můžeš definovat nasazení, která vytvoří nové sady ReplicaSet, nebo odstraní existující nasazení a jejich zdroje převezmou nová nasazení. Nasazení nabízejí řadu klíčových funkcí.

  • Snadné nasazení sady ReplicaSet pomáhá vytvářet pody na pozadí.
  • Vymazat staré sady pomocí ReplicaSet umožní odstranit nepotřebné pody.

Update Deployment 

Vytvoří se nová sada ReplicaSet a nasazení řízenou rychlostí přesune pody ze staré sady ReplicaSet do nové. Každá nová sada ReplicaSet aktualizuje revizi nasazení. Přesunutí nasazení je spuštěno, pokud je aktualizována šablona podů nasazení (.spec.template). Určení stavu Deploy se používá jako indikátor, zda se rollout zasekl.

  • Scale Deployment

Používá se pro usnadnění většího zatížení.

  • Pausing and Resuming a Deployment

Používá se pro více oprav na PodTemplateSpec a následnému obnovení a zahájení nového nasazení.

  • Rolling Back a Deployment

Pokud aktuální stav nasazení není stabilní, probíhá aktualizace na předchozí nasazení.

Jak funguje K8s v praxi?

1. Nastav cluster

Abys mohl*a používat Kubernetes, musíš nastavit cluster. Pod tímto pojmem se ukrývá sada počítačů, na kterých běží K8s a kontejnery. Cluster se dá nastavit jak na vlastní infrastruktuře, tak na cloudu u poskytovatelů, jako je Amazon Web Services (AWS), Google Cloud Platform (GCP) nebo Microsoft Azure.

2. Zabal aplikaci do kontejnerů

K tomu, aby šla aplikace v Kubernetes spustit,  musíš ji nejdřív zabalit do jednoho nebo více kontejnerů. Kontejner je samostatně spustitelný balíček, který obsahuje vše potřebné ke spuštění aplikace, včetně kódu, běhového prostředí, systémových nástrojů, knihoven a nastavení.

3. Definuj požadovaný stav aplikace pomocí manifestů

K řízení nasazení a škálování kontejnerů používá K8s manifesty, což jsou soubory popisující požadovaný stav aplikace. Manifesty určují počet replik jednotlivých kontejnerů, způsob jejich aktualizace a vzájemné komunikace.

4. Odeslání kódu do platformy 

Odeslání kódu aplikace na platformu, jako je GitHub.

5. Použij nástroj CI/CD pro automatizaci

K automatizaci nasazení aplikace použij specializovanou platformu CI/CD, například Harness. Jakmile ji nastavíš, je hotovo. Kód aplikace můžeš snadno a často nasazovat po částech, kdykoli se do úložiště projektu nahraje nový kód.

6. Nasaď aplikaci

Jakmile nasadíš aplikaci, musíš ji vystavit vnějšímu světu vytvořením služby s typem LoadBalancer nebo ExternalName. To umožní uživatelům přistupovat k aplikaci prostřednictvím stabilní IP adresy nebo hostitelského jména.

7. Sleduj a spravuj aplikace

Po nasazení aplikace můžeš pomocí nástroje kubectl sledovat stav kontejnerů, provádět změny požadovaného stavu a škálovat aplikaci nahoru nebo dolů.

Docker & Kubernetes

V dnešním článku jsme se seznámili s obecnými kroky pro nasazení aplikace v Kubernetes. V závislosti na složitosti aplikace mohou být nutné další kroky, například konfigurace úložiště, síťových zásad nebo zabezpečení. Měl*a bys však získat dobrý výchozí bod pro nasazení aplikace v systému Kubernetes.

Pokud bys chtěl*a do K8s proniknout hlouběji, připravili jsme specializovaný a praktický online kurz. Prozkoumej možnosti Dockeru a Kubernetes a nauč se skills, které ti pomůžou s vývojovým cyklem softwaru i aplikací.

Autor: Martin Šlat

Více článků
Příručka od robot_dreams s příkladem syntaxe
Kam se dnes posouvají technologické hranice robotiky?