Kubernetes – co to je a jak začít? Tutoriál na GCP

24/06/2020

Stále více IT systémů je vytvářeno pomocí kontejnerů. Kontejnerizace zahrnuje umístění komponent aplikace (jejích procesů, závislostí, knihoven, konfiguračních souborů nebo místních databází) do několika nebo více „kolekcí“ nazývaných kontejnery. Kombinuje výhody virtualizace a údržby systému na fyzickém serveru. To znamená, že poskytuje škálovatelnost, rychlou a lehkou přenositelnost softwaru s oddělením instancí při zachování vysokého výkonu.

Zatímco několik kontejnerů lze ovládat ručně, je to velmi těžké se stovkami  nebo tisíci distribuovanými a dynamicky spravovanými kontejnery. Odpovědí je orchestrace, tedy zavedení automatizace, řízení skupin a monitorování kontejnerů. Nejoblíbenějším nástrojem pro orchestraci je Kubernetes.

 

Co to Kubernetes?

Kubernetes je open source platforma, která je používána ke správě kontejnerů ve velkém měřítku. 

Název pochází z řeckého jazyka – „κυβερνήτης“ znamená kormidelník, který dokonale vyjadřuje účel platformy. Kubernetes se také zkráceně nazývá K8s a osm písmen „ubernete“zde bylo nahrazeno „8“.

Nástroj byl společností Google vytvořen téměř před 20 lety, aby zvládl výrobní zátěž společnosti. V roce 2014 byl projekt převeden na organizaci Cloud Native Computing Foundation a zveřejněn – od té doby byla platforma neustále vyvíjena organizacemi, společnostmi a specialisty využívajícími Kubernetes (jejich uživatelé se také mohou účastnit projektů open source).

K8s podporuje automatizaci implementace, škálování aplikací, správu kontejnerů, monitorování procesů a změny. Vlastníci aplikací a vývojové týmy využívající platformu se mohou více zaměřit na vývoj svého produktu než na DevOps (správa infrastruktury a párování produktů). Kubernetes umožňuje spravovat clustery (skupiny spolupracujících serverů), takže z pohledu uživatele vypadají – jednoduše řečeno – jako jeden stroj. K8s odstraňuje povinnost vývojáře přizpůsobit aplikaci požadavkům infrastruktury – specialista zavizí spuštění aplikace a Kubernetes může oddělit samotné služby mezi clustery, servery a poukázat na příslušné kontejnery. Kubernetes má svou vlastní formu load-balancingu, což je technika pro rozptyl (vyrovnávání) zatížení mezi více stroji.

KK8s je podporován většinou veřejných cloudů, včetně Google Cloud Platform.

Shlédněte:

Co je to Google Cloud Platform a jak podporuje podnikání?

20 důvodů, proč si zvolit cloudovou infrastrukturu GCP

Centralizace

Kubernetes umožňuje spravovat všechny clustery, servery a kontejnery z jednoho místa bez ohledu na to, kde se nacházejí počítače nebo komponenty Vaší aplikace. Podporuje skupinové plánování, nasazení, škálování a správu životního cyklu položek.

Škálovatelnost

Jádrem K8s je škálovatelnost – nástroj vytvořený společností Google pro provoz miliard kontejnerů týdně. Bez ohledu na počet provedených akcí, použité počítače nebo vlastněné kontejnery není nutné rozšiřovat nebo snižovat tým DevOps. Můžete také škálovat vodorovně a snížit požadavky na prostředky pomocí příkazů nebo uživatelského rozhraní nebo automaticky na základě využití procesoru.

Různá infrastrukturní řešení

Kubernetes pracuje společně s  infrastrukturou na fyzických serverech, cloudových a hybridních řešeních (místní připojení od středu ke cloudu). Je podporován různými poskytovateli veřejného cloudu, m.in. Google Cloud Platform, Amazon Web Services nebo Microsoft Azure.

Konzistence mezi prostředími

Pokud spustíte aplikaci na platformě, stane se z ní mobilní aplikace. Aplikaci můžete přesouvat mezi prostředími (např. vývojářským, testovacím, výrobním) a mezi infrastrukturními řešeními při zachování konzistence aplikací.

Jak zabránit poruchám a jak je samostatně opravit

K8s provádí změny postupně a zároveň sleduje stav každé instance. Pokud se něco pokazí, Kubernetes změny automaticky odmítne. Pokud jeden kontejner selže, nástroj jej nahradí jiným a zároveň pracuje na jeho obnovení nebo odebrání nepotřebných položek.

Neustálý rozvoj platformy

Kubernetes je open source projekt. Na jeho vývoji se podíleli nejen vlastníci, ale i lidé, kteří platformu denně používají: vývojáři, specialisté DevOps, vývojové společnosti. Vytvářejí nové prvky nebo navrhují vylepšení stávajících procesů a nástrojů.

Příklady použití Kubernetes

Platforma je snadno využívána společnostmi s pokročilými službami, které spravují velké množství dat, zaměřené na hladký a rychlý vývoj.

  • CERN (The European Organization for Nuclear Research) v současné době uchovává přibližně 300 petabajtů údajů a jejich počet stále roste (odhaduje se, že během několika let bude v CERN desetkrát více údajů). Kromě toho má vaše organizace sezónní nárůst zatížení a musí mít vysokou škálovatelnost. CERN využívá hybridní infrastrukturu – denně ukládá a zpracovává data na místních serverech a v případě potřeby škáluje řešení do cloudu. Provádění orchestrace kontejnerů s Kubernetes umožnilo organizaci plně automatizovat podporu aplikací, zjednodušit proces nasazení a urychlit technologický vývoj mimo jiné zkrácením doby, kterou trvá přidání clusteru z více než 3 hodin na 15 minut, a nového uzlu (počítače v clusteru) z více než 30 minut na 2 minuty.
  • Nokia vytváří produkty a řešení telekomunikačních sítí a poskytuje řešení mnoha operátorům. Partnerské společnosti Nokia mají různá infrastrukturní řešení: některé používají místní datová centra (fyzické servery), jiné používají virtuální počítače nebo cloudy, jiné používají hybridní společnosti. Cílem společnosti Nokia je poskytnout partnerům plně efektivní řešení, aniž by museli produkt pokaždé přizpůsobit jiné infrastruktuře. Pomocí Kubernetes jsou schopni vytvářet produkty, které mohou běžet v jakémkoli prostředí. K8s také podporuje přidávání nových funkcí a testování bez jejich rozdělení do cílového prostředí, což vám ušetří několik set hodin s každým nasazením.
  • Adidas rozvíjí svou službu elektronického obchodování s využitím příležitostí, které nabízí společnost Kubernetes. Než společnost začala používat K8s, změny byly pracné a nasazení často kulhala ve fázi DevOps – například vývojáři museli čekat 30 minut, než se dostali k virtuálnímu počítači. Po kontejnerizaci webu a spuštění Kubernetes se vývojáři mohou zaměřit na vytváření nových funkcí namísto podrobného přizpůsobení systému požadavkům infrastruktury nebo čekání na podporu DevOps. Dříve byly nové verze vydáváné každých 4-6 týdnů, nyní se provádějí několikrát denně.

Kubernetes využívají mimo jiné Booking.com, BlaBlaCar, ING Group nebo Zalando.

Základy Kubernetes na Google Cloud Platform – tutoriál

Prvním krokem je vstup do konzoli Google Cloud: https://console.cloud.google.com/

Vytvoříme nový projekt (děláme to kliknutím na název projektu vedle „Google Cloud Platform“ v levém horním rohu).

Google Cloud Platform - tworzenie nowego projektu

Vyplníme název projektu a klikneme na Vytvořit.

Google Cloud Platform - tworzenie nowego projektu

Po návratu do seznamu projektů (tlačítko vedle nápisu „Google Cloud Platform“), obdržíme ID projektu. Budeme jej potřebovat v dalších fázích.

Google Cloud Platform - tworzenie nowego projektu

Otevřeme Cloudshell (pravý horní roh).

Kubernetes tutorial - cloudshell

Pomocí následujícího příkazu nastavíme projekt, na kterém budeme pracovat:

gcloud config set project k8s-demo-281313

Mějte na paměti, zapsat ID projektu do příkazu – může se lišit od uvedeného příkladu.

Kubernetes tutorial - ustawienia projektu

Dále nastavíme oblast, ve které chceme aplikaci implementovat:

gcloud config set compute/zone europe-west3-c

Seznam regionů se nachází  zde: https://cloud.google.com/about/locations#europe

Kubernetes tutorial - ustawienie regionu

Cluster vytvoříme pomocí příkazu:

gcloud container clusters create my-cluster--num-nodes=1

Štítky –num-nodes umožňují určit počet uzlů (fyzických nebo virtuálních počítačů) v clusteru. Další informace o štítcích naleznete na adrese: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create#-num-nodes

Tato operace může trvat několik minut.

Po dokončení operace dostaneme tabulku v Cloudshellu, která zobrazuje parametry

Kubernetes tutorial - parametry klastra

Nyní použijeme příkaz:

gcloud container clusters get-credentials my-cluster

Příkaz aktualizuje soubor kubeconfig s příslušnými odkazy a informacemi, aby mohl pokračovat v práci s clusterem.

Kubernetes tutorial - aktualizacja pliku o referencje i informacje

Pro implementaci aplikace do clusteru používáme příkaz: 

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0

Štítek – image označuje odkaz na kontejnerizovanou aplikaci v registru kontejnerů (GCR).Služba Container Registry umožňuje ukládat kontejnerizované obrazy  aplikace. Další informace o GCR naleznete v odkazu: https://cloud.google.com/container-registry

Zde je zdrojový kód aplikace hello-app, kterou implementujeme: https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/blob/master/hello-app/main.go

Naši aplikaci můžeme implementovat označením kontejnerizované kopie v Container Registry.

Kubernetes tutorial - contaner registry

Nyní je nutné vystavit aplikaci (expose). Pro tento účel používáme příkaz:

kubectl expose deployment hello-server --type LoadBalancer \
--port 80 --target-port 8080

Více informací o příkazu kubectl naleznete na: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#expose

Štítek –je zodpovědný za označení typu implementace (ClusterIP, NodePort, LoadBalancer nebo ExternalName). V tomto případě vytvoříme LoadBalancer, který zpřístupní aplikaci přes internet.

Štítek – Port označuje port, na kterém má být aplikace zpřístupněna.

Štítek –target-por označuje port v kontejneru, do kterého má služba směrovat provoz.

Poté zadáme příkaz:  

kubectl get service hello-server

Díky tomu získáme veřejné IP  clusteru, do kterého jsme aplikaci implementovali:

Kubernetes tutorial - IP klastra

Tady je efekt:

Kubernetes tutorial - hello world

Chcete-li odstranit cluster a implementaci vrátit zpět, použijte následující příkazy:

kubectl delete service hello-server
gcloud container clusters delete my-cluster

Kubernetes tutorial - usuniecie klastra

A to je vše ze základů Kubernetes!

Kubernetes na Google Cloud Platform – získejte poukaz 500 USD

JPokud chcete otestovat možnosti Kubernetes a seznámit se s Google Cloud Platform – škálovatelnou cloudovou infrastrukturou s mnoha technologickými návrhy – kontaktujte nás. Jako oficiální partner Google Cloud Premier Vám garantujeme kupón ve výši 500 USD na start v GCP, plnou technickou podporu a možnost účtovat za cloudovou službu v českých korunách.

Powiązane posty

Google Cloud Platform

Jak provádět videokonference na Google Meet?

14 dubna 2020

Google Cloud Platform

Jak vytvořit dotazník v Google Forms?

21 března 2019