GNU/Linux >> Znalost Linux >  >> Linux

Jak restartovat moduly v Kubernetes [Rychlý tip K8s]

Někdy se můžete dostat do situace, kdy budete muset svůj Pod restartovat. Například pokud je váš modul v chybovém stavu.

V závislosti na zásadách restartování se Kubernetes sám pokusí restartovat a opravit to.

Pokud to však nefunguje a nemůžete najít zdroj chyby, ruční restartování Kubernetes Pod je nejrychlejší způsob, jak aplikaci znovu uvést do provozu.

Jak restartovat Pody v Kubernetes

Bohužel neexistuje žádný příkaz kubectl restart pod pro tento účel. Zde je několik způsobů, jak můžete své Pody restartovat:

  1. Restartuje se zaváděcí modul
  2. Škálování počtu replik

Dovolte mi, abych vám obě metody podrobně ukázal.

Metoda 1:Restartuje se zaváděcí modul

Počínaje verzí Kubernetes 1.15 můžete provést postupný restart vašich nasazení.

Ovladač zabíjí jeden modul po druhém a spoléhá na ReplicaSet, aby zvětšil nové moduly, dokud nebudou všechny moduly novější než čas restartování. Podle mého názoru jetoto nejlepší způsob, jak restartovat moduly, protože aplikace nespadne.

Poznámka: IP adresy jednotlivých modulů budou změněny.

Vezměme si příklad. Máte nasazení s názvem my-dep, které se skládá ze dvou modulů (protože replika je nastavena na dva).

[email protected]:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           13s

Pojďme získat podrobnosti o modulu:

[email protected]:~# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
my-dep-6d9f78d6c4-8j5fq   1/1     Running   0          47s   172.16.213.255   kworker-rj2   <none>           <none>
my-dep-6d9f78d6c4-rkhrz   1/1     Running   0          47s   172.16.213.35    kworker-rj1   <none>           <none>

Nyní spustíme restart pro nasazení my-dep pomocí příkazu jako je tento:

kubectl rollout restart deployment name_of_deployment

Pamatujete si název nasazení z předchozích příkazů? Použijte jej zde:

[email protected]:~# kubectl rollout restart deployment my-dep
deployment.apps/my-dep restarted

Proces ukončování starých podů a vytváření nových můžete sledovat pomocí kubectl get pod -w příkaz:

[email protected]:~# kubectl get pod -w
NAME                      READY   STATUS              RESTARTS   AGE
my-dep-557548758d-kz6r7   1/1     Running             0          5s
my-dep-557548758d-svg7w   0/1     ContainerCreating   0          1s
my-dep-6d9f78d6c4-8j5fq   1/1     Running             0          69s
my-dep-6d9f78d6c4-rkhrz   1/1     Terminating         0          69s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          69s
my-dep-557548758d-svg7w   0/1     ContainerCreating   0          1s
my-dep-557548758d-svg7w   1/1     Running             0          3s
my-dep-6d9f78d6c4-8j5fq   1/1     Terminating         0          71s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          72s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          74s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          74s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          76s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          76s

Pokud nyní zkontrolujete Pody, můžete zde vidět, že se podrobnosti změnily:

[email protected]:~# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
my-dep-557548758d-kz6r7   1/1     Running   0          42s   172.16.213.43    kworker-rj1   <none>           <none>
my-dep-557548758d-svg7w   1/1     Running   0          38s   172.16.213.251   kworker-rj2   <none>           <none>

Metoda 2. Změna měřítka počtu replik

V prostředí CI/CD může proces restartování podů v případě chyby trvat dlouho, protože musí znovu projít celým procesem sestavení.

Rychlejší způsob, jak toho dosáhnout, je použití kubectl scale příkaz ke změně čísla repliky na nulu a jakmile nastavíte číslo vyšší než nula, Kubernetes vytvoří nové repliky.

Pojďme to zkusit. Nejprve zkontrolujte své moduly:

[email protected]:~# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-557548758d-kz6r7   1/1     Running   0          11m
my-dep-557548758d-svg7w   1/1     Running   0          11m

Získejte informace o nasazení:

[email protected]:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           12m

Nyní nastavte číslo repliky na nulu:

[email protected]:~# kubectl scale deployment --replicas=0 my-dep
deployment.apps/my-dep scaled

A pak to nastavte zpět na dvě:

[email protected]:~# kubectscale deployment --replicas=2 my-dep
deployment.apps/my-dep scaled

Zkontrolujte moduly nyní:

[email protected]:~# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-557548758d-d2pmd   1/1     Running   0          10s
my-dep-557548758d-gprnr   1/1     Running   0          10s

Úspěšně jste restartovali Kubernetes Pods.

K rychlému a bezpečnému zprovoznění aplikace bez dopadu na koncové uživatele použijte kteroukoli z výše uvedených metod.

Po provedení tohoto cvičení se prosím ujistěte, že jste našli hlavní problém a opravte jej, protože restartování modulu nebude opravte základní problém.

Doufám, že se vám tento tip Kubernetes líbí. Nezapomeňte se přihlásit k odběru pro více.

Rakesh Jain
DevOps Professional | RHCA | Jenkins | Git | Docker | Kubernetes | Ansible | Prometheus | Grafana | AWS Cloud

Linux
  1. Jak najít délku struny v Bash [Rychlý tip]

  2. Jak odstranit moduly v Kubernetes [Rychlé tipy K8s]

  3. Jak odstranit nasazení Kubernetes [Rychlé tipy K8s]

  1. Jak nasadit svůj první modul na clusteru Kubernetes

  2. Jak synchronizovat titulky s filmem [Rychlý tip]

  3. Jak číst uzly v Kubernetes [Rychlý tip K8s]

  1. Jak nainstalovat Curl na Ubuntu [Rychlý tip]

  2. Jak odebrat uživatele ze skupiny v Linuxu [Rychlý tip]

  3. Jak spustit historii Pods na Kubernetes Node?