Pourquoi les pods ne parviennent pas à redémarrer à plusieurs reprises ou sont retirés de manière imprévisible ?

Dépanner les pods qui ne parviennent pas à redémarrer de manière répétée, qui restent bloqués dans une boucle CrashLoopBackOff ou qui sont supprimés de manière inattendue de votre cluster.

Cloud privé virtuel Infrastructure classique

Votre pod est sain mais a été retiré de manière imprévisible ou est bloqué dans une boucle de redémarrage. Parfois, les conteneurs affichent un statut CrashLoopBackOff.

Vos conteneurs ont peut-être dépassé leurs limites de ressources ou vos pods ont peut-être été remplacés par des pods avec une priorité plus élevée. Lorsqu'un conteneur Kubernetes échoue à plusieurs reprises à démarrer, il passe dans un état CrashLoopBackOff indiquant une boucle de redémarrage persistante au sein d'un pod. Cette erreur se produit souvent en raison de divers problèmes empêchant le lancement correct du conteneur. Les causes les plus fréquentes sont une mémoire insuffisante, une surcharge des ressources, des erreurs de déploiement, des problèmes liés à des services tiers tels que des erreurs DNS, des dépendances manquantes ou des échecs de conteneurs dus à des conflits de ports.

Reportez-vous aux sections suivantes :

Définition des limites de ressource de conteneur

  1. Obtenez le nom de votre pod. Si vous avez utilisé un libellé (label), vous pouvez vous en servir pour filtrer vos résultats.
    kubectl get pods --selector='app=wasliberty'
    
  2. Décrivez le pod et recherchez la zone Nombre de redémarrages.
    kubectl describe pod
    
  3. Si le pod a redémarré plusieurs fois sur une courte durée, examinez son statut.
    kubectl get pod <pod_name> -n <namespace> -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}'
    
  4. Passez en revue la raison. Par exemple, OOM Killed signifie mémoire insuffisante, ce qui indique que le conteneur plante en raison d'une limite de ressources.
  5. Augmentez la capacité de votre cluster, par exemple en redimensionnant les pools de travailleurs, afin de garantir la disponibilité des ressources. Pour plus d'informations, voir Redimensionner votre pool de noeuds worker Classic ou Redimensionner votre pool de noeuds worker VPC.

Définition de remplacement de pod par des pods de priorité plus élevée

Pour voir si votre pod a été remplacé par des pods de priorité plus élevée :

  1. Obtenez le nom de votre pod.

    kubectl get pods
    
  2. Décrivez le fichier YAML de votre pod.

    kubectl get pod <pod_name> -o yaml
    
  3. Vérifiez la zone priorityClassName.

    1. S'il n'y a aucune valeur de zone priorityClassName, votre pod a la classe de priorité globalDefault. Si l'administrateur de votre cluster n'a pas défini de classe de priorité globalDefault, la valeur par défaut est zéro (0) ou la priorité la plus faible. Tout pod avec une classe de priorité plus élevée peut préempter ou retirer votre pod.

    2. S'il y a une valeur de zone priorityClassName, procurez-vous la classe de priorité.

        kubectl get priorityclass <priority_class_name> -o yaml
        ```
    3. Notez la zone `value` pour vérifier la priorité de votre pod.
    
    
  4. Répertoriez les classes de priorité existantes dans le cluster.

    kubectl get priorityclasses
    
  5. Pour chaque classe de priorité, obtenez le fichier YAML et notez la zone value.

    kubectl get priorityclass <priority_class_name> -o yaml
    
  6. Comparez la classe de priorité de votre pod avec les valeurs des autres classes de priorité pour voir si elle est supérieure ou inférieure aux autres.

  7. Répétez les étapes 1 à 3 pour les autres pods du cluster, pour vérifier la classe de priorité qu'ils utilisent. Si leur classe de priorité est supérieure à celle de votre pod, votre pod n'est pas mis à disposition, sauf s'il y a suffisamment de ressources pour votre pod et tous les pods de priorité plus élevée.

  8. Contactez l'administrateur de votre cluster pour augmenter la capacité de celui-ci et vérifier que les classes de priorité appropriées sont bien attribuées.