Warum können Pods wiederholt nicht erneut gestartet werden oder werden unerwartet entfernt?

Beheben Sie Probleme mit Pods, die wiederholt nicht neu gestartet werden können, in einer CrashLoopBackOff Schleife hängen bleiben oder unerwartet aus Ihrem Cluster entfernt werden.

Virtual Private Cloud Classic-Infrastruktur

Der Pod befand sich in einwandfreiem Zustand, wird aber unerwartet entfernt oder bleibt in einer Neustartschleife stecken. Manchmal weisen die Container den Status CrashLoopBackOff auf.

Es kann sein, dass die Ressourcengrenzwerte der Container überschritten werden oder dass die Pods durch Pods mit höherer Priorität ersetzt wurden. Wenn ein Kubernetes-Container wiederholt nicht gestartet werden kann, wechselt er in einen Zustand CrashLoopBackOff, der auf eine anhaltende Neustartschleife innerhalb eines Pods hinweist. Dieser Fehler tritt häufig aufgrund verschiedener Probleme auf, die verhindern, dass der Container ordnungsgemäß gestartet werden kann. Häufige Ursachen sind unzureichender Arbeitsspeicher, Ressourcenüberlastung, Bereitstellungsfehler, Probleme mit Diensten von Drittanbietern (z. B. DNS-Fehler), fehlende Abhängigkeiten oder Containerausfälle aufgrund von Portkonflikten.

Siehe hierzu folgenden Abschnitte:

Ressourcenbegrenzungen für Container korrigieren

  1. Rufen Sie den Namen des Pods ab. Falls Sie eine Bezeichnung verwenden, können Sie diese zum Filtern der Ergebnisse verwenden.
    kubectl get pods --selector='app=wasliberty'
    
  2. Beschreiben Sie den Pod und suchen Sie nach dem Zähler für Neustart (Restart Count).
    kubectl describe pod
    
  3. Rufen Sie den Status des Pods ab, wenn er in einem kurzen Zeitraum oft erneut gestartet wird.
    kubectl get pod <pod_name> -n <namespace> -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}'
    
  4. Überprüfen Sie die Ursache. Beispielsweise OOM Killed bedeutet out of memory, dass der Container aufgrund einer Ressourcenbeschränkung abstürzt.
  5. Erweitern Sie die Kapazität Ihres Clusters, beispielsweise durch Anpassung der Größe von Worker-Pools, damit die Ressourcen bereitgestellt werden können. Weitere Informationen finden Sie unter Größe des Classic-Worker-Pools ändern oder Größe des VPC-Worker-Pools ändern.

Ersetzen von Pods durch Pods mit höherer Priorität korrigieren

Gehen Sie wie folgt vor, um festzustellen, ob der Pod durch Pods mit höherer Priorität ersetzt wurde:

  1. Rufen Sie den Namen des Pods ab.

    kubectl get pods
    
  2. Beschreiben Sie Ihre Pod-YAML.

    kubectl get pod <pod_name> -o yaml
    
  3. Überprüfen Sie das Feld priorityClassName.

    1. Wenn für das Feld priorityClassName kein Wert angegeben ist, weist der Pod die Prioritätsklasse globalDefault auf. Wenn der Clusteradministrator nicht die Prioritätsklasse globalDefault festgelegt hat, ist der Standardwert null (0) oder die niedrigste Priorität. Der Pod kann von jedem Pod mit einer höheren Priorität zurückgestellt oder entfernt werden.

    2. Wenn für das Feld priorityClassName ein Wert angegeben ist, rufen Sie die Prioritätsklasse ab.

        kubectl get priorityclass <priority_class_name> -o yaml
        ```
    3. Notieren Sie den Wert für das Feld `value`, um die Priorität des Pods zu überprüfen.
    
    
  4. Listen Sie vorhandene Prioritätsklassen im Cluster auf.

    kubectl get priorityclasses
    
  5. Rufen Sie für jede Prioritätsklasse die YAML-Datei ab und notieren Sie den Wert im Feld value.

    kubectl get priorityclass <priority_class_name> -o yaml
    
  6. Vergleichen Sie den Prioritätsklassenwert des Pos mit den anderen Prioritätsklassenwerten, um festzustellen, ob seine Priorität höher oder niedriger ist.

  7. Wiederholen Sie die Schritte 1 bis 3 für andere Pods im Cluster, um zu überprüfen, welche Prioritätsklasse von ihnen verwendet wird. Wenn die Prioritätsklasse der anderen Pods höher ist als die Ihres Pods, wird Ihr Pod erst bereitgestellt, wenn genügend Ressourcen für Ihren Pod und alle Pods mit höherer Priorität vorhanden sind.

  8. Wenden Sie sich an Ihren Cluster-Administrator, um die Kapazität Ihres Clusters zu erhöhen und sicherzustellen, dass die richtigen Prioritätsklassen zugewiesen sind.