Kubernetes je jednou z nejpopulárnějších automatizačních platforem pro nasazování, škálování a provozování aplikačních kontejnerů na clusteru hostitelů nebo uzlů.
Tento článek pojednává o jednom z centrálních objektů v Kubernetes: nasazení. Cílem je porozumět jeho chování a tomu, jak jej vytvořit, aktualizovat a odstranit.
Table of Contents
Co je to nasazení?
Rozmístění je jedním z objektů používaných ke spouštění modulů. Osvědčené postupy Kubernetes podporují použití nasazení pro aplikace bez stavu. Bez nasazení byste museli ručně vytvořit, aktualizovat a odstranit více modulů, což by bylo pro mnoho modulů zdlouhavé a neproveditelné.
Nasazení deklaruje jeden objekt v YAML, který nejen vytváří Pody, ale také zajišťuje, že jsou aktuální a běží. Své aplikace můžete také snadno automaticky škálovat pomocí nasazení na Kubernetes. Nasazení se tedy používá ke škálování, nasazení a vrácení verzí vašich aplikací v Pods.
Nasazení také říká Kubernetes, kolik kopií Podu chceme spustit, a Kubernetes se postará o zbytek. Přidružený řadič vytvoří ReplicaSet z vaší konfigurace při vytváření nasazení. Řadič přidružený k ReplicaSet vytvoří řadu podů z konfigurace ReplicaSet.
Výhody použití nasazení namísto přímého vytváření ReplicaSet jsou:
- Historizace objektu: každá změna v objektu (prostřednictvím „použít“ nebo „úpravy“) vytvoří zálohu předchozí verze.
- Správa rollout a rollback: Můžete se vrátit ke konfiguraci ve spojení s předchozím bodem.
Vytvoření rozmístění
Existují dvě metody, které můžeme použít k vytvoření nasazení Kubernetes:
Imperativní metoda
Rozhraní API Kubernetes umožňují přímější a naléhavější přístup bez nutnosti konfiguračních souborů nebo manifestů ve formátu YAML. V tomto přístupu stačí říct, co chceme udělat, a Kubernetes převezme odpovědnost za definování toho, co je třeba udělat, abychom dosáhli očekávaného výsledku.
Chcete-li použít imperativní metodu, použijte příkaz níže:
kubectl create deployment nginx-deployment --image nginx --port=80
Deklarativní metoda
V této metodě musíte deklarovat vše, a když použijete tento kód, Kubernetes jen přečte vaše definice a vytvoří přesně tak, jak je prezentováno nebo deklarováno.
Chcete-li použít deklarativní nasazení, budete muset vytvořit soubor YAML.
Soubor YAML pro nasazení s názvem new_deployment.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: #Specifies the number of Pod Copies replicas: 3 #Selects the Pod to be managed by the deployment selector: #Matches the defined labels matchLabels: deploy: example template: metadata: #Specifies the labels on the Pod. labels: deploy: example spec: containers: - name: nginx image: nginx:1.20.2
V tomto souboru YAML je po definování verze Kubernetes API, typu vytvářeného objektu a názvu nasazení sekce spec. V této části nejprve definujete klíč replik, který udává počet instancí podu, které musí nasazení ponechat aktivní.
Pomocí štítku selektoru identifikujte moduly v nasazení. K tomu můžete použít štítek nasazení, který říká, že všechny pody, které odpovídají těmto štítkům, jsou seskupeny v nasazení.
Poté máte objekt šablony, kde máte model pod ve specifikaci nasazení. Když nasazení vytvoří moduly, vytvoří je pomocí této šablony. Specifikace běžného pod lze nalézt pod klíčem šablony.
S tímto nasazením budou obrázky Nginx se štítky nasazeny do Podů. Navíc v tomto bodě musíte být opatrní a Pod je jednotka škálovatelnosti v Kubernetes, takže musíte přemýšlet o vzoru, který chcete použít, pokud do stejného Podu vložíte několik kontejnerů.
Dále použijte soubor new_deployment.yaml Yaml, použijte následující příkaz:
kubectl apply -f new_deployment.yaml
Po několika sekundách můžete získat stav nasazení pomocí následujícího:
kubectl get all
Načíst a aktualizovat nasazení
Všimněte si, že máte vytvořené moduly, nasazení a také Replicaset. Nasazení tedy vždy vytvoří a spravuje Replicaset. Nyní můžete použít následující příkaz k popisu nasazení:
kubectl describe deployment nginx-deployment
Nyní máte úplný popis nasazení. Zdůrazňuje strategii použitou k vytvoření/přestavbě modulů, když byla aktualizace definována jako RollingUpdate.
Strategie RollingUpdate umožňuje řádnou migraci jedné verze aplikace na novější verzi. Je to výchozí strategie používaná v Kubernetes.
Kromě toho máme také následující strategie:
- Znovu vytvořit: Ukončí aktuálně spuštěné instance modulu a „znovu je vytvoří“ s novou verzí;
- Modrá/zelená: Tato strategie vytváří dvě samostatná, ale identická prostředí. V modrém prostředí aplikace běží tak, jak je, zatímco v zeleném prostředí běží tak, jak bude v budoucnu;
- Canary: Strategie nasazení, kde se na postupném vydávání aplikace nebo služby podílí podmnožina uživatelů.
Pokud se rozhodnete pro „rolling-update“, můžete nakonfigurovat jeho chování podle počtu požadovaných replik.
- maxSurge vám umožňuje určit (v procentech nebo absolutních hodnotách), kolik podů může vytvořit navíc k počtu aktuálně nakonfigurovaných replik.
- maxUnavailable umožňuje určit (v procentech nebo absolutních hodnotách), kolik modulů může být během aktualizace „nedostupných“ v závislosti na počtu nakonfigurovaných replik.
V závislosti na vaší aplikaci a automatickém škálovači vám tyto konfigurace umožní zajistit QoS nebo urychlit vaše nasazení.
Dále musíte změnit velikost podů na 10 a změnit značku obrázku Nginx na nejnovější.
kubectl scale deployment nginx-deployment --replicas=10
Všimněte si, že se vytváří 5 kontejnerů a z 10 modulů máme k dispozici 5.
Po několika sekundách použijte následující příkaz:
kubectl get all
Zde vidíte, že všechny moduly byly vytvořeny a kontejnery běží.
Odstranění rozmístění
Chcete-li odstranit nasazení Kubernetes, můžete použít následující příkazy:
kubectl delete deploy nginx-deployment kubectl delete deploy new_deployment.yaml
Helm: Zjednodušte nasazení
Když chcete nasadit složitou aplikaci, která využívá desítky nebo dokonce stovky zdrojů Kubernetes, nástroj kubectl se stane nevhodným, a proto byl vyvinut nástroj Helm. Helm je správce balíčků pro Kubernetes, který staví na kubectl a zjednodušuje nasazení aplikací.
Ve slovníku Helm se aplikace nazývá vydání. Je spojen s grafem, tj. sbírkou konfiguračních souborů ve formátu YAML obsahujících globální proměnné a šablony popisující zdroje Kubernetes.
Závěr
Nasazení je základní objekt Kubernetes. Protože velká síla znamená velkou odpovědnost, musíte být opatrní při její konfiguraci, jinak riskujete neočekávané chování. Chcete-li jít dále s konfiguracemi nasazení, můžete se podívat na dokumentaci Kubernetes.
Můžete také prozkoumat některé z nejlepších výukových programů Kubernetes, abyste se naučili od nuly a stali se odborníky.