Programování

Kubernetes vs. Docker: Pochopte kontejnery a orchestraci

Pokud jste drželi krok s nejnovějšími trendy ve vývoji softwaru, existují dva pojmy, se kterými jste se nepochybně setkali znovu a znovu: Docker a Kubernetes, které jsou v podstatě zkratkou prokontejnery aorchestrace.

Kontejnery Docker pomohly zefektivnit proces přesunu aplikací prostřednictvím vývoje a testování a do výroby, zatímco Docker i Kubernetes pomohly znovu objevit způsob, jakým jsou aplikace vytvářeny a nasazovány - jako kolekce mikroslužeb namísto monolitických zásobníků.

Proč jsou Docker a Kubernetes důležité, jak mění vývoj softwaru a jakou roli v tomto procesu hraje každý? Pokusím se na tyto otázky odpovědět níže.

Docker a kontejnery

Kontejnery - podporované v systémech Linux, Windows a dalších moderních operačních systémech - umožňují spouštění softwaru v samostatných mini prostředích, která jsou izolována od zbytku systému. Kontejnery byly přirovnávány k virtuálním počítačům, ale nejsou to virtuální počítače - jsou mnohem štíhlejší, rychlejší při spuštění a zastavení a mnohem flexibilnější a přenosnější. Vzhledem k tomu, že kontejnery lze během několika sekund roztočit nahoru nebo dolů nebo zmenšit nebo zmenšit, usnadňují spouštění aplikací v elastických prostředích, jako je cloud.

Linux a další operační systémy již mnoho let podporují kontejnerové aplikace, ale práce s kontejnery nebyla zrovna uživatelsky přívětivá. Docker ve své otevřené i komerční inkarnaci je software, díky kterému jsou kontejnery uživatelsky přívětivou a vývojářsky příjemnou komoditou. Docker poskytuje běžnou sadu nástrojů a metafor pro kontejnery, takže můžete balit aplikace do imagí kontejnerů, které lze snadno nasadit a znovu použít ve vaší vlastní organizaci nebo jinde.

Stručně řečeno, Docker umožňuje rychlé vytváření obrazů kontejnerů, jejich verzí, sdílení, přesouvání a nasazování na hostitele kompatibilní s Dockerem jako běžící kontejnery.

Kdy mám použít Docker a kontejnery?

Docker a kontejnery jsou nejvhodnější pro práci s úlohami, které musí mít jednu nebo více z následujících kvalit:

  • Elastická škálovatelnost. Nevíte, kolik instancí aplikace budete muset spustit, abyste uspokojili poptávku. Kontejnerovou aplikaci nebo službu lze v našem měřítku škálovat tak, aby vyhovovala poptávce nasazením méně nebo více instancí jejích kontejnerů.
  • Izolace. Nechcete, aby aplikace zasahovala do jiných aplikací. Možná používáte několik verzí aplikace vedle sebe, abyste uspokojili různé revize rozhraní API. Nebo možná chcete udržovat základní systém čistý (vždy dobrý nápad).
  • Přenosnost. Tuto aplikaci musíte spustit v různých prostředích a požadujete, aby každé nastavení bylo reprodukovatelné. Kontejnery vám umožňují zabalit celé běhové prostředí vaší aplikace, což usnadňuje nasazení aplikace kdekoli, kde najdete hostitele kompatibilního s Dockerem - vývojářskou plochu, testovací stroj QA, místní železo nebo vzdálený cloud.

Další informace o Dockeru a kontejnerech

  • Co je Docker? Jiskra revoluce v kontejneru
  • Proč byste měli používat Docker a kontejnery
  • Začněte s Dockerem
  • Skryté výhody Dockeru pro QA
  • 12 open-source nástrojů, díky nimž je Docker lepší
  • Další novinky, analýzy, návody, recenze a rady Dockeru

Kubernetes a orchestrace kontejnerů

Kontejnery jsou určeny hlavně k izolaci procesů nebo aplikací od sebe navzájem a od základního systému. Vytváření a nasazování jednotlivých kontejnerů je snadné. Ale co když chcete sestavit více kontejnerů - řekněme databázi, webový front-end, výpočetní back-end - do velké aplikace, kterou lze spravovat jako jednotku, aniž byste se museli starat o nasazení, připojení, správu, a škálovat každý z těchto kontejnerů zvlášť? Potřebujete způsoborganizovat všechny části do funkčního celku.

To je práce, kterou Kubernetes přijímá. Pokud jsou kontejnery cestujícími na plavbě, je vedoucím plavby Kubernetes.

Kubernetes, založený na projektech vytvořených ve společnosti Google, poskytuje způsob automatizace nasazení a správy aplikací s více kontejnery napříč více hostiteli, aniž byste museli každý kontejner spravovat přímo. Vývojář popisuje rozložení aplikace napříč více kontejnery, včetně podrobností, jako je to, jak každý kontejner používá síť a úložiště. Kubernetes zpracovává zbytek za běhu. Zpracovává také správu fiddly detailů, jako jsou tajemství a konfigurace aplikací.

Kubernetes vyžaduje určité množství odborných znalostí, aby bylo dobře použitelné, i když je to mnohem více řešení na klíč, než tomu bylo dříve. Některý pokrok ve snadném používání je způsoben snadno dostupnými recepty pro běžné aplikace (Helmovy grafy); některé jsou způsobeny množstvím distribucí Kubernetes produkovaných značkovými firmami (Red Hat, Canonical, Docker), které pracují ruku v ruce s populárními aplikačními zásobníky a vývojovými rámci.

Kdy mám použít Kubernetes a orchestraci kontejneru?

Jednoduché kontejnerové aplikace, které slouží malému počtu uživatelů, obvykle orchestraci nevyžadují, natož Kubernetes. Ale pokud má aplikace více než triviální úroveň funkčnosti nebo triviální počet uživatelů, je obtížné znovuobjevit kolečko poskytované orchestračními systémy. Tady jsou některá základní pravidla pro určení, kdy má orchestrace vstoupit do obrázku.

  • Vaše aplikace jsou složité. Jakákoli aplikace, která zahrnuje více než dva kontejnery, pravděpodobně odpovídá faktuře. To znamená, že skromné ​​aplikace, které slouží pouze malému počtu uživatelů, mohou být organizovány prostřednictvím minimálnějšího řešení, jako je režim roje Docker, spíše než Kubernetes.
  • Vaše aplikace mají vysoké nároky na škálování a odolnost. Kubernetes a další orchestrátoři vám umožní vyvážit zátěže a roztočit kontejnery tak, aby uspokojily poptávku deklarativně, a to popisem požadovaného stavu systému namísto ručního kódování reakcí na měnící se podmínky.
  • Chcete maximálně využít moderní techniky CI / CD. Orchestrační systémy podporují vzory nasazení pro aplikace využívající modré / zelené nasazení nebo postupné upgrady.

Může přijít den, kdy jsou Docker a Kubernetes zastíněni ještě přátelštějšími abstrakcemi, a ustoupí elegantnějším způsobům vytváření a správy kontejnerů. Prozatím jsou však Docker a Kubernetes zásadní, abychom je věděli a porozuměli.

Další informace o Kubernetes a orchestraci

  • Co je Kubernetes? Vaše další aplikační platforma
  • 4 důvody, proč byste měli použít Kubernetes
  • 10 distribucí Kubernetes vedoucích k revoluci v kontejneru
  • Managed Kubernetes: AWS vs. Azure vs. Google Cloud
  • Ahoj MicroK8s: Jednodušší Kubernetes
  • Co je nového v Kubernetes
  • Více novinek, návodů, recenzí, rad a analýz Kubernetes