Úvod
Nasazení kontejnerů změnilo zavedené postupy vývoje softwaru. Byly nutné nové nástroje a techniky, takže Google vyvinul Kubernetes, open-source systém pro orchestraci kontejnerů pro automatické škálování, nasazování a správu aplikací.
Poskytuje jednotné rozhraní API, které dokáže spravovat i ty nejsložitější systémy rozmístěné na více serverech a platformách.
Zjistěte, proč je Kubernetes nepostradatelným nástrojem pro správu a nasazení kontejnerů.
Co je to Container Orchestration?
Nástroj pro orchestraci kontejnerů , jako je Kubernetes, automatizuje správu kontejnerů v neustále se měnícím a chaotickém prostředí. Abychom plně porozuměli jeho roli, ponoříme se hluboko do složitosti prostředí kontejnerů.
Kontejnery jsou malá virtuální prostředí s individuální pamětí, systémovými soubory a prostorem pro zpracování. Nepotřebují vlastní operační systémy a jsou mnohem lehčí než tradiční virtuální stroje . Jejich velikost a soběstačnost je činí přenosnými a nekonečně škálovatelnými napříč různými zařízeními a operačními systémy.
Vývojáři nyní mohou navrhovat aplikace jako sadu menších nezávislých mikroslužeb. V ideálním případě by jedna služba měla vykonávat pouze jednu funkci. Tyto mikroslužby jsou pak rychle a snadno propojeny a nasazeny v clusteru Kubernetes.
Jak Kubernetes funguje?
Kontejnery jsou navrženy tak, aby byly co nejlehčí. V důsledku toho jsou křehké a přechodné. Místo zvýšení odolnosti jednotlivého kontejneru využívá Kubernetes nestabilní povahu kontejneru a přeměňuje tuto slabinu na aktivum.
Kubernetes potřebuje pouze obecný rámec toho, jak byste chtěli, aby váš cluster vypadal. Tento rámec je obvykle základní soubor manifestu, který poskytujete Kubernetes pomocí nástroje rozhraní příkazového řádku.
Výchozí rozhraní příkazového řádku Kubernetes se nazývá kubectl . Kubectl se používá k přímé správě prostředků clusteru a poskytování pokynů serveru Kubernetes API. Server API pak automaticky přidá a odebere kontejnery ve vašem clusteru, aby se ujistil, že definovaný požadovaný stav a skutečný stav shluku se vždy shoduje.
Hlavními prvky clusteru Kubernetes jsou Hlavní uzel , Pracovní uzly a Pody . Komponenty, které dělají globální rozhodnutí o clusteru, jako je server API, jsou umístěny v hlavním uzlu.
Hlavní uzel Kubernetes
Uzel je fyzický stroj nebo VM. Hlavní uzel je vrstva orchestrace kontejneru klastru. Komponenty hlavního uzlu spravují pracovní uzly a každému přidělují jednotlivé úkoly. Je odpovědný za navázání a udržování komunikace v rámci clusteru a za vyrovnávání zátěže.
Hlavní uzel
Server API | Server API komunikuje se všemi komponentami v clusteru. |
Key-Value Store (etcd) | Odlehčené distribuované úložiště párů klíč–hodnota používané ke shromažďování všech dat clusteru. |
Ovladač | Používá API Server ke sledování stavu clusteru. Pokusí se přesunout skutečný stav clusteru tak, aby odpovídal požadovanému stavu z vašeho souboru manifestu. |
Plánovač | Naplánuje nově vytvořené pody do pracovních uzlů. Vždy vybere uzly s nejmenším provozem, aby se vyrovnala pracovní zátěž. |
Kubernetes Worker Node
Komponenty hlavního uzlu řídí pracovní uzly . Existuje několik instancí pracovních uzlů, z nichž každá provádí své přiřazené úkoly. Tyto uzly jsou stroje, kde jsou nasazeny kontejnerové pracovní zátěže a objemy úložiště.
Worker Node
Kubelet | Démon, který běží na každém uzlu a odpovídá na požadavky mastera na vytvoření, zničení a sledování modulů na tomto počítači. |
Doba běhu kontejneru | běhové prostředí kontejneru načte obrázky z registru obrázků kontejneru a spouští a zastavuje kontejnery. Obvykle se jedná o software nebo plugin tří stran, jako je Docker. |
Kube-proxy | Síťový proxy, který udržuje síťovou komunikaci s vašimi moduly z klastru nebo mimo něj. |
Doplňky (DNS, webové uživatelské rozhraní..) | Další funkce, které můžete přidat do svého clusteru a rozšířit tak určité funkce. |
Pod | pod je nejmenší prvek plánování v Kubernetes. Představuje „obal“ kontejneru s kódem aplikace. Pokud potřebujete škálovat svou aplikaci v clusteru Kubernetes, můžete tak učinit pouze přidáním nebo odebráním podů. Uzel může hostit více podů. |
Jak spravovat clustery Kubernetes
Kubernetes má několik nástrojů, které uživatelé nebo interní komponenty využívají k identifikaci, správě a manipulaci s objekty v clusteru Kubernetes.
Štítek
Štítky jsou jednoduché páry klíč/hodnota, které lze přiřadit podům. Po přiřazení lze moduly snadněji identifikovat a ovládat. Štítky seskupují a organizují pody do uživatelem definované podmnožiny. Možnost seskupit pody a dát jim smysluplné identifikátory zlepšuje uživatelskou kontrolu nad clusterem.
Poznámky
Podobně jako štítky, anotace jsou také páry klíč/hodnota a lze je použít k připojení metadat k objektům. Kubernetes však nepoužívá anotace k výběru a identifikaci objektů.
Anotace ukládají informace, které nejsou určeny k použití interními zdroji Kubernetes. Mohou obsahovat kontaktní informace správce, obecné informace o obrázku nebo sestavení, konkrétní umístění dat nebo tipy pro protokolování. Díky anotacím již tyto užitečné informace nemusí být ukládány na externí zdroje, což zvyšuje výkon.
Jmenné prostory v Kubernetes
Každý objekt v clusteru Kubernetes má jedinečné ID a název což označuje jeho typ zdroje. jmenný prostor se používá k oddělení skupiny zdrojů. Každé jméno v rámci jmenného prostoru musí být jedinečné, aby se zabránilo problémům s kolizemi jmen. Při použití stejného jména v různých jmenných prostorech žádná taková omezení neexistují.
Tato charakteristická funkce vám umožňuje ponechat oddělené instance stejného objektu se stejným názvem v distribuovaném prostředí.
Chcete-li vypsat existující jmenné prostory v klastru, zadejte v rozhraní příkazového řádku následující příkaz:
kubectl get namespaces
Řadiče replikace
Koncept mikroslužeb implicitně znamená, že je třeba nasadit a spustit více instancí jakékoli dané služby současně. Řadiče replikace spravovat počet replik pro jakoukoli danou instanci modulu. Kombinací řadičů replikace s uživatelsky definovanými štítky můžete snadno spravovat počet podů v clusteru pomocí příslušného štítku.
Můžeme například nastavit počet replik v našem konfiguračním souboru na pět (5). Pokud v tuto chvíli běží pouze tři (3) repliky, Kubernetes roztočí další dvě (2), aby odpovídaly našemu požadovanému stavu. Pokud běží 10 replik, Kubernetes ukončí pět (5) z nich.
Kubernetes neustále pracuje na harmonizaci počtu replik s počtem definovaným ve vašem konfiguračním souboru.
Nasazení
Daměstnání je mechanismus, který vytváří šablonu, která zajišťuje, že pody budou spuštěny a spuštěny, aktualizovány nebo vráceny zpět, jak je definováno uživatelem. Nasazení může přesáhnout jeden modul a rozložit se na více modulů.
Řadiče replikace řídí počet replik služby. Pody jsou pravidelně přidávány nebo odebírány z clusteru. Během tohoto procesu se moduly často pohybují po clusteru a dokonce se nasazují na různé uzly. Kvůli této skutečnosti není IP adresa podu konstantní. Služba Kubernetes používá selektor štítků k seskupení podů a jejich abstrahování pomocí jediné virtuální IP adresy používané k objevování těchto podů a interakci s nimi.
Proč potřebujete Kubernetes?
Efektivní využití zdrojů
Nástroje pro orchestraci kontejnerů, jako je Kubernetes, šetří zdroje efektivněji, než by to kdy dokázal člověk. Kubernetes monitoruje cluster a rozhoduje o tom, kde spouštět vaše kontejnery na základě zdrojů aktuálně spotřebovaných na vašich uzlech.
Komunikace a synchronizace kontejnerů
Vzhledem k tomu, že aplikace často vyžaduje více než jeden kontejner, může Kubernetes nasadit vícekontejnerové aplikace a zajistit, aby všechny kontejnery byly synchronizovány a vzájemně komunikovaly.
Kubernetes nabízí pohled na stav vaší aplikace. Může poskytnout důležité informace a metriky vašich kontejnerů a clusterů. Když se aplikace porouchá, Kubernetes ji automaticky obnoví otočením dalšího kontejneru s minimálním prostojem při optimálním využití systémových prostředků.
Přizpůsobte se efektivně
Bez nástrojů pro orchestraci by se škálování vašich aplikací stalo časově náročným procesem. Organizace se nyní mohou rychle přizpůsobit potřebám trhu přidáváním nebo odebíráním kontejnerů v závislosti na momentálním pracovním zatížení. Například online prodejci mohou během zvýšené poptávky okamžitě zvýšit kapacitu své aplikace. V obdobích nižší poptávky mohou administrátoři rychle škálovat aplikaci zpět.
Jak začít s Kubernetes
Vzhledem k tomu, že Kubernetes je systém pro nastavování a koordinaci kontejnerů, předpokladem jeho používání je mít kontejnerizační jádro .
Existuje mnoho řešení kontejnerů, z nichž Docker je dnes nejoblíbenější. Mezi další poskytovatele kontejnerů patří AWS, LXD ,Kontejnery Java ,Kontejnery Hyper-V a Kontejnery Windows Server .
Kromě kontejnerů existují i další projekty a podpora, na které se Kubernetes spoléhá, aby svým uživatelům poskytl plný zážitek. Některé z nich jsou:
- Docker nebo Atomic Registry (pro oficiální registr)
- Ansible (pro automatizaci)
- OpenvSwitch a inteligentní okrajové směrování (pro sítě)
- LDAP, SELinux, RBAC a OAUTH s vrstvami s více nájemci (pro zabezpečení Kubernetes)
- Heapster, Kibana, Hawkular a Elastic (pro telemetrii)
Pro začátečníky, kteří ještě nemají zkušenosti s nasazováním více kontejnerů, Minikube je skvělý způsob, jak začít. Minikube je systém pro lokální provoz jednoho uzlu clusteru a je vynikající pro naučení se základů, než přejdete na Kubernetes.
Pokud se chcete dozvědět více o Ansible a Kubernetes, podívejte se na náš článek o rozdílech mezi Ansible a Kubernetes.