GNU/Linux >> Tutoriels Linux >  >> Linux

Comment redémarrer les pods dans Kubernetes [Quick K8s Tip]

Parfois, vous pouvez vous retrouver dans une situation où vous devez redémarrer votre Pod. Par exemple, si votre pod est en état d'erreur.

En fonction de la politique de redémarrage, Kubernetes lui-même essaie de redémarrer et de le réparer.

Mais si cela ne fonctionne pas et si vous ne trouvez pas la source de l'erreur, le redémarrage manuel du pod Kubernetes est le moyen le plus rapide de faire fonctionner à nouveau votre application.

Comment redémarrer les pods dans Kubernetes

Malheureusement, il n'y a pas de commande kubectl restart pod dans ce but. Voici quelques façons de redémarrer vos pods :

  1. Le pod de déploiement redémarre
  2. Mise à l'échelle du nombre de répliques

Laissez-moi vous montrer les deux méthodes en détail.

Méthode 1 :redémarrage du pod de déploiement

À partir de la version 1.15 de Kubernetes, vous pouvez effectuer un redémarrage continu de vos déploiements.

Le contrôleur tue un pod à la fois et s'appuie sur le ReplicaSet pour faire évoluer les nouveaux pods jusqu'à ce que tous les pods soient plus récents que l'heure de redémarrage. À mon avis, c'est la meilleure façon de redémarrer vos pods car votre application ne tombera pas en panne.

Remarque : Les adresses IP individuelles des pods seront modifiées.

Prenons un exemple. Vous avez un déploiement nommé my-dep qui se compose de deux pods (car le réplica est défini sur deux).

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

Obtenons les détails du 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>

Déployons maintenant le redémarrage du déploiement de my-dep avec une commande comme celle-ci :

kubectl rollout restart deployment name_of_deployment

Vous souvenez-vous du nom du déploiement des commandes précédentes ? Utilisez-le ici :

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

Vous pouvez observer le processus d'arrêt des anciens pods et de création de nouveaux en utilisant kubectl get pod -w commande :

[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

Si vous vérifiez les pods maintenant, vous pouvez voir que les détails ont changé ici :

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

Méthode 2. Mise à l'échelle du nombre de répliques

Dans un environnement CI/CD, le processus de redémarrage de vos pods en cas d'erreur peut prendre beaucoup de temps car il doit recommencer tout le processus de construction.

Un moyen plus rapide d'y parvenir est d'utiliser l'kubectl scale commande pour changer le numéro de réplica à zéro et une fois que vous avez défini un nombre supérieur à zéro, Kubernetes crée de nouveaux réplicas.

Essayons. Vérifiez d'abord vos pods :

[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

Obtenez les informations de déploiement :

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

Maintenant, définissez le numéro de réplique sur zéro :

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

Et puis remettez-le à deux :

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

Vérifiez les pods maintenant :

[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

Vous avez redémarré avec succès les pods Kubernetes.

Utilisez l'une des méthodes ci-dessus pour faire fonctionner votre application rapidement et en toute sécurité sans impact sur les utilisateurs finaux.

Après avoir fait cet exercice, assurez-vous de trouver le problème principal et de le résoudre car le redémarrage de votre pod ne le fera pas résoudre le problème sous-jacent.

J'espère que vous aimez cette astuce Kubernetes. N'oubliez pas de vous abonner pour en savoir plus.

Rakesh Jain
DevOps Professionnel | RHCA | Jenkins | Gite | Docker | Kubernetes | Ansible | Prométhée | Grafane | Nuage AWS

Linux
  1. Comment déployer votre premier pod sur un cluster Kubernetes

  2. Comment synchroniser les sous-titres avec le film [Astuce rapide]

  3. Comment supprimer des pods dans Kubernetes [Quick K8s Tips]

  4. Comment supprimer un déploiement Kubernetes [Quick K8s Tips]

  5. Comment lire les nœuds dans Kubernetes [Quick K8s Tip]

Comment créer un StatefulSet dans Kubernetes

Comment créer et gérer des pods Kubernetes sous Linux

Comment redémarrer un réseau dans Ubuntu [Astuce du débutant]

Comment ajouter de nouveaux pinceaux dans GIMP [Quick Tip]

Comment recadrer des images dans GIMP [Quick Tip]

Comment ajouter un répertoire à PATH sous Linux [Astuce rapide]