GNU/Linux >> Linux Esercitazione >  >> Linux

Come riavviare i pod in Kubernetes [Suggerimento rapido per K8]

A volte potresti trovarti in una situazione in cui devi riavviare il tuo Pod. Ad esempio, se il tuo Pod è in stato di errore.

A seconda del criterio di riavvio, Kubernetes stesso tenta di riavviarlo e risolverlo.

Ma se non funziona e se non riesci a trovare l'origine dell'errore, riavviare manualmente Kubernetes Pod è il modo più veloce per far funzionare di nuovo la tua app.

Come riavviare i Pod in Kubernetes

Sfortunatamente, non esiste nessun comando kubectl restart pod per questo scopo. Ecco un paio di modi per riavviare i tuoi Pod:

  1. Il Pod di rollout si riavvia
  2. Ridimensionamento del numero di repliche

Lascia che ti mostri entrambi i metodi in dettaglio.

Metodo 1:il rollout Pod si riavvia

A partire da Kubernetes versione 1.15, puoi eseguire un riavvio in sequenza delle tue distribuzioni.

Il controller uccide un pod alla volta e si affida a ReplicaSet per aumentare la scalabilità di nuovi pod fino a quando tutti i pod non sono più recenti dell'ora di riavvio. A mio parere, questo è il modo migliore per riavviare i pod poiché l'applicazione non verrà interrotta.

Nota: Gli IP dei singoli pod verranno modificati.

Facciamo un esempio. Hai una distribuzione denominata my-dep che consiste in due pod (poiché la replica è impostata su due).

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

Prendiamo i dettagli del pod:

[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>

Ora eseguiamo il riavvio per la distribuzione my-dep con un comando come questo:

kubectl rollout restart deployment name_of_deployment

Ricordi il nome della distribuzione dai comandi precedenti? Usalo qui:

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

Puoi guardare il processo di chiusura dei vecchi pod e di creazione di nuovi utilizzando kubectl get pod -w comando:

[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

Se controlli i Pod ora, puoi vedere che i dettagli sono cambiati qui:

[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>

Metodo 2. Ridimensionamento del numero di repliche

In un ambiente CI/CD, il processo di riavvio dei pod in caso di errore potrebbe richiedere molto tempo poiché è necessario ripetere l'intero processo di compilazione.

Un modo più rapido per raggiungere questo obiettivo è utilizzare la kubectl scale comando per modificare il numero di replica su zero e una volta impostato un numero maggiore di zero, Kubernetes crea nuove repliche.

Proviamolo. Controlla prima i tuoi Pod:

[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

Ottieni le informazioni sulla distribuzione:

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

Ora, imposta il numero di replica su zero:

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

E poi riportalo a due:

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

Controlla i pod ora:

[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

Hai riavviato correttamente i Kubernetes Pods.

Utilizza uno dei metodi sopra indicati per far funzionare la tua app in modo rapido e sicuro senza influire sugli utenti finali.

Dopo aver eseguito questo esercizio, assicurati di trovare il problema principale e risolverlo poiché il riavvio del pod non risolvere il problema sottostante.

Spero che questo suggerimento di Kubernetes ti piaccia. Non dimenticare di iscriverti per saperne di più.

Rakesh Jain
DevOps professionale | RHCA | Jenkins | Git | Docker | Kubernetes | Abile | Prometeo | Grafana | AWS Cloud

Linux
  1. Come distribuire il tuo primo pod su un cluster Kubernetes

  2. Come sincronizzare i sottotitoli con il film [Suggerimento rapido]

  3. Come installare Curl su Ubuntu [Suggerimento rapido]

  4. Come rimuovere l'utente dal gruppo in Linux [Suggerimento rapido]

  5. Come trovare la lunghezza della corda in Bash [Suggerimento rapido]

Come creare uno StatefulSet in Kubernetes

Come creare e gestire i pod Kubernetes in Linux

Come riavviare una rete in Ubuntu [Suggerimento per principianti]

Come aggiungere nuovi pennelli in GIMP [Suggerimento rapido]

Come ritagliare le immagini in GIMP [Suggerimento rapido]

Come aggiungere una directory a PATH in Linux [Suggerimento rapido]