Jak nasadit aplikace v Kubernetes

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.

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.
  Jak smazat účet Sling

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.

  Oprava Error Code Beaver v Destiny

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.
  Jak vždy spustit Mozilla Firefox v režimu soukromého prohlížení

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.