GNU/Linux >> Znalost Linux >  >> Cent OS

Pochopení architektury Kubernetes pomocí diagramů

Úvod

Tento tutoriál je prvním ze série článků, které se zaměřují na Kubernetes a koncept nasazení kontejnerů. Kubernetes je nástroj používaný ke správě clusterů kontejnerizovaných aplikací. Ve výpočetní technice je tento proces často označován jako orchestrace .

Přirovnání s hudebním orchestrem je v mnoha ohledech vhodné. Stejně jako dirigent, Kubernetes koordinuje spoustu mikroslužeb, které dohromady tvoří užitečnou aplikaci. Kubernetes automaticky a nepřetržitě monitoruje cluster a provádí úpravy jeho součástí.

Porozumění architektuře Kubernetes je zásadní pro nasazení a údržbu kontejnerizovaných aplikací.

Co je Kubernetes?

Kubernetes nebo k8s ve zkratce je to systém pro automatizaci nasazení aplikací. Moderní aplikace jsou rozptýleny mezi cloudy, virtuálními stroji a servery. Ruční správa aplikací již není životaschopnou možností.

K8s transformuje virtuální a fyzické stroje na jednotný povrch API. Vývojář pak může použít Kubernetes API k nasazení, škálování a správě kontejnerizovaných aplikací.

Jeho architektura také poskytuje flexibilní rámec pro distribuované systémy. K8s automaticky organizuje škálování a převzetí služeb při selhání pro vaše aplikace a poskytuje vzory nasazení.

Pomáhá spravovat kontejnery, na kterých jsou spuštěny aplikace, a zajišťuje, že nedochází k prostojům v produkčním prostředí. Pokud například kontejner spadne, jiný kontejner automaticky zaujme jeho místo, aniž by si toho koncový uživatel všiml.

Kubernetes není pouze orchestrační systém. Jedná se o soubor nezávislých, vzájemně propojených řídicích procesů. Jeho úlohou je neustále pracovat na aktuálním stavu a posouvat procesy požadovaným směrem.

Pokud se chcete dozvědět více o orchestraci kontejnerů, přečtěte si náš článek Co je Kubernetes.

Architektura a komponenty Kubernetes

Kubernetes má decentralizovanou architekturu, která nezpracovává úkoly sekvenčně. Funguje na základě deklarativního modelu a implementuje koncept ‚požadovaného stavu .‘ Tyto kroky ilustrují základní proces Kubernetes:

  1. Administrátor vytvoří a vloží požadovaný stav aplikace do souboru manifestu.
  2. Soubor je poskytován serveru Kubernetes API Server pomocí rozhraní CLI nebo uživatelského rozhraní. Výchozí nástroj příkazového řádku Kubernetes se nazývá kubectl . V případě, že potřebujete úplný seznam příkazů kubectl, podívejte se na náš Cheat Sheet pro Kubectl.
  3. Kubernetes ukládá soubor (požadovaný stav aplikace) v databázi nazvané Key-Value Store (etcd) .
  4. Kubernetes poté implementuje požadovaný stav do všech relevantních aplikací v rámci clusteru.
  5. Kubernetes nepřetržitě monitoruje prvky clusteru, aby se ujistil, že se aktuální stav aplikace neliší od požadovaného stavu.

Nyní prozkoumáme jednotlivé součásti standardního clusteru Kubernetes, abychom procesu porozuměli podrobněji.

Co je Master Node v Kubernetes Architecture?

Kubernetes Master (Master Node) přijímá vstup z CLI (Command-Line Interface) nebo UI (User Interface) prostřednictvím API. Toto jsou příkazy, které poskytujete Kubernetes.

Definujete moduly, sady replik a služby, které má Kubernetes udržovat. Například, který obrázek kontejneru použít, které porty vystavit a kolik replik podů spustit.

Také poskytujete parametry požadovaného stavu pro aplikace běžící v tomto clusteru.

Hlavní uzel Kubernetes

Server API

Server API je přední část řídicí roviny a jediná součást v řídicí rovině, se kterou přímo komunikujeme. Interní systémové komponenty, stejně jako externí uživatelské komponenty, všechny komunikují prostřednictvím stejného API.

Key-Value Store (etcd)

Obchod Key-Value Store, nazývaný také etcd , je databáze, kterou Kubernetes používá k zálohování všech dat clusteru. Ukládá celou konfiguraci a stav clusteru. Hlavní uzel se dotazuje etcd k načtení parametrů pro stav uzlů, podů a kontejnerů.

Ovladač

Role kontrolora je získat požadovaný stav z API serveru. Kontroluje aktuální stav uzlů, které má za úkol řídit, a určuje, zda existují nějaké rozdíly, a případně je řeší.

Plánovač

Plánovač sleduje nové požadavky přicházející z API serveru a přiřazuje je zdravým uzlům. Hodnotí kvalitu uzlů a nasazuje moduly do nejvhodnějšího uzlu. Pokud nejsou k dispozici žádné vhodné uzly, pody se uvedou do stavu nevyřízeného stavu, dokud se takový uzel neobjeví.

Co je Worker Node v Kubernetes Architecture?

Pracovní uzly naslouchají serveru API pro nové pracovní úkoly; provedou pracovní přiřazení a poté výsledky nahlásí zpět do uzlu Kubernetes Master.

Kubernetes Worker Node

Kubelet

kubelet běží na každém uzlu v clusteru. Je to hlavní agent Kubernetes. Instalací kubelet se CPU, RAM a úložiště uzlu stanou součástí širšího clusteru. Sleduje úlohy odeslané z API serveru, provádí úlohu a podává zprávy zpět Masterovi. Monitoruje také moduly a hlásí ovládacímu panelu, pokud modul není plně funkční. Na základě těchto informací se pak Master může rozhodnout, jak přidělit úkoly a zdroje k dosažení požadovaného stavu.

Doba běhu kontejneru

Běhové prostředí kontejneru stahuje obrázky z registru obrázků kontejneru a spouští a zastavuje kontejnery. Tuto funkci obvykle provádí software nebo plugin třetí strany, jako je Docker.

Kube-proxy

kube-proxy zajišťuje, že každý uzel dostane svou IP adresu, implementuje místní iptables a pravidla pro zpracování směrování a vyrovnávání zatížení provozu.

Pod

Pod je nejmenší prvek plánování v Kubernetes. Bez něj nemůže být kontejner součástí clusteru. Pokud potřebujete škálovat svou aplikaci, můžete tak učinit pouze přidáním nebo odebráním podů.

Pod slouží jako ‚obal‘ pro jeden kontejner s kódem aplikace. Na základě dostupnosti zdrojů Master naplánuje pod na konkrétním uzlu a koordinuje se s běhovým prostředím kontejneru, aby kontejner spustil.

V případech, kdy moduly neočekávaně selžou při plnění svých úkolů, se Kubernetes nepokouší je opravit. Místo toho vytvoří a spustí na svém místě nový modul. Tento nový modul je replikou, s výjimkou DNS a IP adresy. Tato funkce měla hluboký dopad na to, jak vývojáři navrhují aplikace.

Vzhledem k flexibilní povaze architektury Kubernetes již aplikace nemusí být vázány na konkrétní instanci podu. Místo toho je třeba aplikace navrhnout tak, aby jejich místo mohl bez problémů zaujmout zcela nový modul vytvořený kdekoli v clusteru. K usnadnění tohoto procesu používá Kubernetes služby .

Služby Kubernetes

Lusky nejsou konstantní. Jednou z nejlepších funkcí, které Kubernetes nabízí, je, že nefunkční moduly jsou automaticky nahrazeny novými.

Tyto nové moduly však mají jinou sadu IP adres. Může to vést k problémům se zpracováním a ke ztrátě IP adres, protože se již IP adresy neshodují. Pokud by byla ponechána bez dozoru, tato vlastnost by učinila pody vysoce nespolehlivé.

Služby jsou představeny, aby poskytovaly spolehlivé sítě tím, že přinášejí stabilní IP adresy a názvy DNS do nestabilního světa podů.

Řízením provozu přicházejícího a odcházejícího do pod poskytuje služba Kubernetes stabilní síťový koncový bod – pevnou IP, DNS a port. Prostřednictvím služby lze přidat nebo odebrat jakýkoli modul bez obav, že by se základní informace o síti nějak změnily.

Jak služby Kubernetes fungují?

Pody jsou spojeny se službami prostřednictvím párů klíč–hodnota zvaných štítky a selektory . Služba automaticky objeví nový modul se štítky, které odpovídají selektoru.

Tento proces plynule přidává nové pody do služby a zároveň odstraňuje ukončené pody z clusteru.

Pokud například požadovaný stav obsahuje tři repliky podu a uzel, na kterém běží jedna replika selže , aktuální stav je zredukován na dva lusky. Kubernetes pozoruje, že požadovaný stav jsou tři lusky. Poté naplánuje jednu novou repliku převezme místo neúspěšného modulu a přiřadí jej jinému uzlu v clusteru.

Totéž platí při aktualizaci nebo škálování aplikace přidáním nebo odebráním modulů. Jakmile aktualizujeme požadovaný stav, Kubernetes si všimne nesrovnalosti a přidá nebo odebere pody, aby odpovídaly souboru manifestu. Ovládací panel Kubernetes zaznamenává, implementuje a spouští smyčky odsouhlasení na pozadí, které neustále kontrolují, zda prostředí odpovídá požadavkům definovaným uživatelem.

Co je nasazení kontejneru?

Abychom plně porozuměli tomu, jak a co Kubernetes orchestruje, musíme prozkoumat koncept nasazování kontejnerů .

Tradiční nasazení

Zpočátku vývojáři nasazovali aplikace na jednotlivé fyzické servery. Tento typ nasazení představoval několik problémů. Sdílení fyzických zdrojů znamenalo, že jedna aplikace mohla zabírat většinu výpočetního výkonu, což omezovalo výkon ostatních aplikací na stejném počítači.

Tradiční nasazení

Rozšiřování hardwarové kapacity trvá dlouho, což následně zvyšuje náklady. Aby organizace vyřešily hardwarová omezení, začaly virtualizovat fyzické stroje.

Virtualizované nasazení

Virtualizované nasazení vám umožňuje vytvářet izolovaná virtuální prostředí, Virtual Machines (VM) , na jediném fyzickém serveru. Toto řešení izoluje aplikace v rámci virtuálního počítače, omezuje využití zdrojů a zvyšuje zabezpečení. Aplikace již nemůže volně přistupovat k informacím zpracovávaným jinou aplikací.

Virtualizované nasazení

Virtualizovaná nasazení vám umožňují rychle škálovat a rozšiřovat zdroje jednoho fyzického serveru, aktualizovat je podle libosti a udržovat náklady na hardware pod kontrolou. Každý virtuální počítač má svůj operační systém a může provozovat všechny potřebné systémy na virtualizovaném hardwaru.

Nasazení kontejneru

Nasazení kontejneru je dalším krokem na cestě k vytvoření flexibilnějšího a efektivnějšího modelu. Podobně jako virtuální počítače mají kontejnery individuální paměť, systémové soubory a prostor pro zpracování. Přísná izolace však již není omezujícím faktorem.

Více aplikací nyní může sdílet stejný základní operační systém. Díky této funkci jsou kontejnery mnohem efektivnější než plnohodnotné virtuální počítače. Jsou přenosné napříč cloudy, různými zařízeními a téměř jakoukoli distribucí OS.

Nasazení kontejneru

Struktura kontejneru také umožňuje, aby aplikace běžely jako menší, nezávislé části. Tyto části lze poté dynamicky nasadit a spravovat na více strojích. Propracovaná struktura a segmentace úkolů jsou příliš složité na to, aby je bylo možné spravovat ručně.

K efektivní správě všech pohyblivých částí zapojených do tohoto procesu je vyžadováno automatizační řešení, jako je Kubernetes.


Cent OS
  1. Pochopení systémových volání na Linuxu pomocí strace

  2. Jak nainstalovat Kubernetes s Minikube na Ubuntu 20.04

  3. Návrat do pracovního stavu pomocí btrfs + apt-btrfs-snapshot na Ubuntu 12.10

  1. Vysvětlení architektury Apache Hadoop (s diagramy)

  2. Jak nastavit Kubernetes Cluster pomocí Rancher

  3. Nastavte cluster Kubernetes pomocí Rancher

  1. Ansible vs Kubernetes:Pochopení rozdílů

  2. Jak monitorovat Kubernetes pomocí Prometheus

  3. Jak nainstalovat Kubernetes(k8s) s Minikube na CentOS 8