Programování

Co je Kubernetes? Vaše další aplikační platforma

Kubernetes je populární open source platforma pro orchestrace kontejneru - to znamená pro správu aplikací vytvořených z více volaných, převážně samostatných runtime kontejnery. Od zahájení projektu kontejnerizace Docker v roce 2013 se kontejnery stávají stále populárnějšími, ale koordinace velkých a distribuovaných kontejnerových aplikací může být stále obtížnější. Díky tomu, že se kontejnerové aplikace dramaticky snáze spravují ve velkém, se Kubernetes stala klíčovou součástí revoluce kontejnerů.

Co je orchestrace kontejneru?

Kontejnery podporují oddělení obav podobné VM, ale s mnohem menší režií a mnohem větší flexibilitou. Výsledkem je, že kontejnery přetvořily způsob, jakým lidé uvažují o vývoji, nasazování a údržbě softwaru. V kontejnerové architektuře jsou různé služby, které tvoří aplikaci, zabaleny do samostatných kontejnerů a nasazeny napříč klastrem fyzických nebo virtuálních strojů. Z toho však vyplývá potřeba orchestrace kontejneru—Nástroj, který automatizuje nasazení, správu, škálování, síťování a dostupnost kontejnerových aplikací.

Co je Kubernetes?

Kubernetes je open source projekt, který se stal jedním z nejpopulárnějších nástrojů pro orchestraci kontejnerů v okolí; umožňuje vám nasadit a spravovat aplikace s více kontejnery ve velkém. Zatímco v praxi se Kubernetes nejčastěji používá s Dockerem, nejoblíbenější platformou pro kontejnery, může také pracovat s jakýmkoli kontejnerovým systémem, který odpovídá standardům Open Container Initiative (OCI) pro formáty obrazů kontejnerů a runtime. A protože Kubernetes je otevřený zdroj, s relativně malým omezením, jak jej lze použít, může jej svobodně používat kdokoli, kdo chce spouštět kontejnery, většinou kdekoli, kde je chce provozovat - místně, ve veřejném cloudu nebo obojí .

Google a Kubernetes

Kubernetes začal život jako projekt v rámci Google. Je nástupcem - i když ne přímým potomkem - Google Borg, dřívějšího nástroje pro správu kontejnerů, který Google používal interně. Google open source Kubernetes v roce 2014, částečně proto, že architektury distribuovaných mikroslužeb, které Kubernetes usnadňuje, usnadňují spouštění aplikací v cloudu. Google vnímá přijetí kontejnerů, mikroslužeb a Kubernetes jako potenciálního zákazníka k jeho cloudovým službám (ačkoli Kubernetes určitě funguje také s Azure a AWS). Kubernetes je v současné době spravován nadací Cloud Native Computing Foundation, která sama zastřešuje nadaci Linux Foundation.

Kubernetes vs. Docker a Kubernetes vs. Docker Swarm

Kubernetes nenahrazuje Dockera, ale rozšiřuje jej. Kubernetes však dělá nahradit některé z technologií vyšší úrovně, které se kolem Dockeru objevily.

Jednou z takových technologií je Docker Swarm, orchestrátor dodávaný s Dockerem. Je stále možné použít Docker Swarm namísto Kubernetes, ale Docker Inc. se rozhodl, aby se Kubernetes stal součástí edice Docker Community a Docker Enterprise.

Ne, že Kubernetes je náhradou za Docker Swarm. Kubernetes je podstatně složitější než Swarm a jeho nasazení vyžaduje více práce. Cílem práce je však opět poskytnout velkou výplatu v dlouhodobém horizontu - spravovatelnější a odolnější aplikační infrastrukturu. Pro vývojové práce a menší shluky kontejnerů představuje Docker Swarm jednodušší volbu.

Kubernetes vs. Mesos

Další projekt, o kterém jste možná slyšeli jako o konkurentovi Kubernetes, je Mesos. Mesos je projekt Apache, který se původně objevil od vývojářů na Twitteru; ve skutečnosti to bylo považováno za odpověď na projekt Google Borg.

Mesos ve skutečnosti nabízí služby orchestrace kontejnerů, ale jeho ambice jdou mnohem dál: jeho cílem je být jakýmsi cloudovým operačním systémem, který dokáže koordinovat jak kontejnerizované, tak i nekontaminované komponenty. Za tímto účelem může v Mesosu běžet spousta různých platforem - včetně samotného Kubernetes.

Architektura Kubernetes: Jak funguje Kubernetes

Kubernetesova architektura využívá různé koncepty a abstrakce. Některé z nich jsou variace na existující, známé pojmy, ale jiné jsou specifické pro Kubernetes.

Klastry Kubernetes

Nejvyšší úroveň Kubernetes abstrakce, shluk, odkazuje na skupinu počítačů se spuštěnou Kubernetes (sama klastrovanou aplikací) a kontejnery, které spravuje. Klastr Kubernetes musí mít a mistr, systém, který ovládá a ovládá všechny ostatní stroje Kubernetes v klastru. Vysoce dostupný klastr Kubernetes replikuje vybavení pána na více strojích. Plánovač úloh a správce řadičů však současně spouští pouze jeden hlavní server.

Uzly a lusky Kubernetes

Každý klastr obsahuje Kubernetes uzly. Uzly mohou být fyzické stroje nebo virtuální počítače. Myšlenkou je opět abstrakce: Bez ohledu na to, na jaké aplikaci běží, Kubernetes zpracovává nasazení na tomto substrátu. Kubernetes dokonce umožňuje zajistit, aby určité kontejnery fungovaly pouze na virtuálních počítačích nebo pouze na holém kovu.

Uzly běží lusky, nejzákladnější objekty Kubernetes, které lze vytvořit nebo spravovat. Každý pod představuje jednu instanci aplikace nebo běžícího procesu v Kubernetes a skládá se z jednoho nebo více kontejnerů. Kubernetes spouští, zastavuje a replikuje všechny kontejnery v podu jako skupinu. Pody udržují pozornost uživatele na aplikaci, nikoli na samotných kontejnerech. Podrobnosti o tom, jak je třeba nakonfigurovat Kubernetes, od stavu podů nahoře, jsou zachovány Atd, distribuovaný obchod klíč – hodnota.

Pods jsou vytvořeny a zničeny na uzlech podle potřeby, aby vyhovovaly požadovanému stavu určenému uživatelem v definici pod. Kubernetes poskytuje abstrakci nazvanou a ovladač za řešení logistiky toho, jak se lusky roztočí, vyvalí a roztočí. Řadiče přicházejí v několika různých příchutích v závislosti na druhu spravované aplikace. Například nedávno představený řadič „StatefulSet“ se používá k řešení aplikací, které vyžadují trvalý stav. Další druh ovladače, rozvinutí, se používá k zvětšení nebo zmenšení aplikace, aktualizaci aplikace na novou verzi nebo vrácení aplikace zpět do známé dobré verze, pokud nastane problém.

Služby Kubernetes

Protože lusky žijí a umírají podle potřeby, potřebujeme jinou abstrakci pro řešení životního cyklu aplikace. Aplikace by měla být trvalou entitou, i když lusky s kontejnery obsahujícími aplikaci samy o sobě nejsou trvalé. Za tímto účelem poskytuje Kubernetes abstrakci nazvanou a servis.

Služba v Kubernetes popisuje, jak lze k dané skupině pods (nebo jiným objektům Kubernetes) přistupovat prostřednictvím sítě. Jak uvádí dokumentace Kubernetes, lusky, které tvoří back-end aplikace, se mohou změnit, ale front-end by o tom nemusel vědět ani ji sledovat. Služby to umožňují.

Obrázek završuje několik dalších interních součástí Kubernetes. The plánovač rozdělit pracovní zátěže do uzlů, aby byly vyvážené napříč prostředky a aby nasazení splňovala požadavky definic aplikací. The správce správce zajišťuje, že stav systému - aplikace, pracovní zátěže atd. - odpovídá požadovanému stavu definovanému v konfiguračním nastavení Etcd.

Je důležité mít na paměti, že žádný z nízkoúrovňových mechanismů používaných kontejnery, jako je samotný Docker, není vyměnit podle Kubernetes. Spíše Kubernetes poskytuje větší sadu abstrakcí pro použití těchto mechanismů kvůli udržování běhu aplikací v měřítku.

Kubernetes Ingress

Služby Kubernetes jsou považovány za spuštěné v rámci shluk. Ale budete chtít mít přístup k těmto službám z vnějšího světa. Kubernetes má několik komponent, které to s různým stupněm jednoduchosti a robustnosti usnadňují, včetně NodePort a LoadBalancer, ale komponentou s největší flexibilitou je Ingress. Ingress je rozhraní API, které spravuje externí přístup ke službám clusteru, obvykle prostřednictvím protokolu HTTP.

Ingress vyžaduje pro správné nastavení trochu konfigurace - Matthew Palmer, který napsal knihu o vývoji Kubernetes, vás provede celým procesem na svých webových stránkách.

Řídicí panel Kubernetes

Jednou z komponent Kubernetes, která vám pomůže udržet si přehled o všech těchto dalších komponentách, je Dashboard, webové uživatelské rozhraní, pomocí kterého můžete nasazovat a řešit problémy s aplikacemi a spravovat prostředky klastru. Panel není ve výchozím nastavení nainstalován, ale jeho přidání není příliš velké potíže.

Související video: Co je Kubernetes?

V tomto 90sekundovém videu se dozvíte o Kubernetes, otevřeném systému pro automatizaci kontejnerových aplikací, od jednoho z vynálezců technologie, Joe Bedy, zakladatele a technologického ředitele společnosti Heptio.

Výhody Kubernetes

Protože Kubernetes zavádí nové abstrakce a koncepty a protože křivka učení pro Kubernetes je vysoká, je jen normální ptát se, jaké jsou dlouhodobé výplaty za používání Kubernetes. Zde je přehled některých konkrétních způsobů, jak je spouštění aplikací v Kubernetes snazší.

Kubernetes za vás spravuje stav aplikací, replikaci, vyvažování zátěže a přidělování hardwarových prostředků

Jednou z nejzákladnějších povinností, které vám Kubernetes sundá z rukou, je práce s udržováním aplikace v provozu, jejím spuštěním a reagováním na požadavky uživatelů. Aplikace, které se stanou „nezdravými“ nebo neodpovídají definici zdraví, kterou pro ně popisujete, lze automaticky vyléčit.

Další výhodou, kterou Kubernetes poskytuje, je maximalizace využití hardwarových prostředků včetně paměti, I / O úložiště a šířky pásma sítě. Aplikace mohou mít měkké a tvrdé limity nastavené na využití zdrojů. Mnoho aplikací, které používají minimální zdroje, lze zabalit společně na stejný hardware; aplikace, které je třeba natáhnout, lze umístit do systémů, kde mají prostor pro růst. A opět lze automatizovat zavádění aktualizací napříč klastrem nebo vrácení zpět, pokud se aktualizace přeruší.

Kubernetes usnadňuje nasazení předkonfigurovaných aplikací pomocí grafů Helm

Správci balíčků, jako je Debian Linux APT a Python's Pip, šetří uživatelům problémy s ruční instalací a konfigurací aplikace. To je obzvláště užitečné, když má aplikace více externích závislostí.

Helm je v podstatě správcem balíčků pro Kubernetes. Mnoho populárních softwarových aplikací musí běžet v Kubernetes jako skupina vzájemně závislých kontejnerů. Helm poskytuje definiční mechanismus, „graf“, který popisuje, jak lze aplikaci nebo službu spustit jako skupinu kontejnerů uvnitř Kubernetes.

Můžete vytvářet své vlastní Helmovy grafy od nuly a možná budete muset, pokud vytváříte vlastní aplikaci, která se má nasadit interně. Pokud ale používáte populární aplikaci, která má společný vzor nasazení, existuje velká šance, že už pro ni někdo vytvořil Helmův graf a publikoval jej v oficiálním úložišti Helmových grafů. Dalším místem, kde hledat oficiální mapy Helm, je adresář Kubeapps.com.

Kubernetes zjednodušuje správu úložiště, tajných kódů a dalších prostředků souvisejících s aplikacemi

Kontejnery mají být neměnné; nic, co do nich dáte, se nemělo změnit. Ale aplikace potřebují stav, což znamená, že potřebují spolehlivý způsob řešení externích úložných svazků. To je o to komplikovanější způsob, jakým kontejnery žijí, umírají a znovu se rodí po celou dobu životnosti aplikace.

Kubernetes poskytuje abstrakce, které umožňují kontejnerům a aplikacím pracovat s úložištěm stejným způsobem odděleně jako jiné prostředky. Mnoho běžných druhů úložiště, od svazků Amazon EBS až po staré staré sdílené složky NFS, je přístupné prostřednictvím ovladačů úložiště Kubernetes, nazývaných svazky. Normálně jsou svazky svázány s konkrétním podem, ale podtyp svazku zvaný „Trvalý svazek“ lze použít pro data, na kterých je třeba žít nezávisle na jakémkoli podu.

Kontejnery často musí pracovat se „tajemstvími“ - pověřeními, jako jsou klíče API nebo hesla služeb, která nechcete pevně zakódovat do kontejneru nebo otevřeně uložit na svazek disku. Zatímco k tomu jsou k dispozici řešení třetích stran, jako jsou Dockerova tajemství a HashiCorp Vault, Kubernetes má svůj vlastní mechanismus pro nativní zacházení s tajnými kódy, i když je třeba jej konfigurovat opatrně. Například Etcd musí být nakonfigurován pro použití SSL / TLS při odesílání tajných klíčů mezi uzly, nikoli v prostém textu.

Aplikace Kubernetes mohou běžet v hybridních a více cloudových prostředích

Jedním z dlouhotrvajících snů o cloud computingu je možnost spouštět jakoukoli aplikaci v jakémkoli cloudu nebo v jakékoli kombinaci cloudů veřejných nebo soukromých. Nejde jen o to, abychom se vyhnuli zablokování dodavatele, ale také abychom využili výhod funkcí specifických pro jednotlivé cloudy.

Kubernetes poskytuje sadu primitiv, souhrnně označovaných jako federace, pro udržování synchronizace více klastrů mezi sebou napříč více regiony a cloudy. Například nasazení dané aplikace lze udržovat konzistentní mezi více clustery a různé clustery mohou sdílet zjišťování služeb, takže k prostředku back-end lze přistupovat z libovolného clusteru. Federaci lze také použít k vytvoření vysoce dostupného nasazení Kubernetes, které je odolné vůči chybám, bez ohledu na to, zda překlenujete více cloudových prostředí.

Federace je pro Kubernetes stále relativně nová. Ve federovaných instancích zatím nejsou podporovány všechny prostředky API a upgrady ještě nemají infrastrukturu automatického testování. Ale tyto nedostatky jsou určeny k řešení v budoucích verzích Kubernetes.

Kde získat Kubernetes

$config[zx-auto] not found$config[zx-overlay] not found