Stratégie de redémarrage

Dans le développement d'applications cloud natives, Kubernetes est devenu la norme en matière d'orchestration de conteneurs. Lorsque nous utilisons Kubernetes pour gérer nos applications, nous divisons généralement l'application en plusieurs conteneurs, appelés « Pods » dans Kubernetes. Pendant que chaque pod est en cours d'exécution, il peut rencontrer divers problèmes, tels qu'une panne de conteneur, des ressources insuffisantes ou des erreurs humaines. Dans ces cas, la stratégie de redémarrage de Kubernetes est particulièrement importante.

Dans cet article, nous examinerons en profondeur la stratégie de redémarrage des pods de Kubernetes, notamment son fonctionnement, sa configuration et les meilleures pratiques.

Fonctionnement de la politique de redémarrage des pods Kubernetes

La stratégie de redémarrage de Kubernetes détermine principalement la manière dont Kubernetes gère le redémarrage d'un conteneur lorsqu'il s'arrête anormalement ou planifié. Kubernetes prend en charge deux stratégies de redémarrage principales : Never   OnFailure et  Always.

  1. Toujours : lorsque le conteneur se termine et se ferme, redémarrez toujours le conteneur, politique par défaut
  2. OnFailure : Lorsque le conteneur se ferme anormalement (le code d'état de sortie est différent de 0), redémarrez le conteneur
  3. Jamais : quittez lorsque le conteneur se termine et ne redémarrez jamais le conteneur.

Remarque : La politique de redémarrage s'applique à tous les conteneurs de l'objet pod. Le conteneur qui doit être redémarré pour la première fois sera redémarré immédiatement en cas de besoin. Les opérations ultérieures qui doivent être redémarrées seront retardées par kubelet pendant un certain temps, et le temps de retard des opérations de redémarrage répétées est de 10 s, 20 s, 40 s, 80 s, 160 s, 300 s, 300 s est le temps de retard maximum

Configurer la politique de redémarrage du pod Kubernetes

Dans Kubernetes, la stratégie de redémarrage peut être configurée via la définition du Pod. Par exemple, voici une  Always définition de pod qui utilise une stratégie de redémarrage :

apiVersion: v1  
kind: Pod  
metadata:  
  name: restart-example  
spec:  
  restartPolicy: Always  
  containers:  
  - name: mycontainer  
    image: myimage

Dans cette définition, restartPolicy le champ est défini sur  Always, indiquant que Kubernetes tentera de redémarrer le conteneur quel que soit son état.

suggestion

Lorsque vous utilisez une stratégie de redémarrage, voici quelques recommandations pratiques :

  1. Choisissez une stratégie de redémarrage appropriée en fonction de l'importance de l'application. Pour les applications qui peuvent tolérer de courtes pauses mais pas de redémarrages fréquents,  la stratégie Never ou  OnFailure doit être sélectionnée. Always Les stratégies doivent être sélectionnées pour les applications dont il faut garantir qu'elles s'exécutent en continu et tolèrent les redémarrages  .
  2. Si possible, le besoin de redémarrages doit être minimisé. Cela peut nécessiter l'amélioration du code, l'optimisation de la configuration ou l'ajout de ressources.
  3. Pour les applications nécessitant des redémarrages fréquents, vous devez envisager d'utiliser une infrastructure plus stable ou d'optimiser l'application pour réduire les pannes.
  4. Pour les applications dont le démarrage prend beaucoup de temps, vous pouvez envisager d'utiliser une stratégie de restauration ou une stratégie de déploiement plus complexe telle que des mises à jour propagées.
  5. Si vous utilisez la fonction de restauration automatique, vous devrez peut-être configurer une limite appropriée sur le nombre d'étapes de restauration pour éviter que l'application ne reste bloquée dans une boucle de restauration infinie.