Warum können meine Pods nach dem Löschen aller Workerknoten auf neuen Workerknoten nicht gestartet werden?
Beheben Sie Fehler beim Löschen von Worker-Knoten und festgefrorene Pods.
Virtuelle Private Cloud Klassische Infrastruktur
Sie haben alle Workerknoten in Ihrem Cluster gelöscht, sodass keine Workerknoten mehr vorhanden sind. Anschließend haben Sie Workerknoten hinzugefügt. Wenn Sie den folgenden Befehl ausführen, weisen mehrere Pods für Kubernetes-Komponenten über
einen längeren Zeitraum den Status ContainerCreating und die calico-node-Pods den Status CrashLoopBackOff auf.
Für 1.29 und spätere Versionen:
kubectl -n calico-system get pods
Für 1.28 und früher:
kubectl -n kube-system get pods
Wenn Sie alle Workerknoten in Ihrem Cluster löschen, ist kein Workerknoten für die Ausführung des Calico-Controller-Pods (calico-kube-controllers) verfügbar. Die Daten des Calico-Controllerpods können nicht aktualisiert werden, um
die Daten der gelöschten Workerknoten zu entfernen. Wenn der Calico-Controller-Pod auf den neuen Workerknoten erneut ausgeführt wird, werden die zugehörigen Daten nicht in Bezug auf die neuen Workerknoten aktualisiert und der Pod startet die
calico-node-Pods nicht.
Löschen Sie die vorhandenen Workerknoteneinträge für calico-node, sodass neue Pods erstellt werden können.
Vorbereitende Schritte: Installieren Sie die Calico-Befehlszeilenschnittstelle (Calico-CLI).
-
Führen Sie den Befehl
ibmcloud ks cluster configaus, kopieren Sie die Ausgabe und fügen Sie sie ein, um die UmgebungsvariableKUBECONFIGfestzulegen. Schließen Sie die Optionen--adminund--networkin den Befehlibmcloud ks cluster configein. Durch die Option--adminwerden die Schlüssel für den Zugriff auf Ihr Infrastrukturportfolio und zum Ausführen von Calico-Befehlen in Ihren Workerknoten heruntergeladen. Durch die Option--networkwird die Calico-Konfigurationsdatei für die Ausführung aller Calico-Befehle heruntergeladen.ibmcloud ks cluster config --cluster CLUSTER_NAME_OR_ID --admin --network -
Notieren Sie sich für die
calico-node-Pods, die bereits über einen längeren Zeitraum den StatusCrashLoopBackOffaufweisen, die IP-Adressen unterNODE.Für 1.29 und spätere Versionen:
kubectl -n calico-system get pods -o wideFür 1.28 und früher:
kubectl -n kube-system get pods -o wideIn dieser Beispielausgabe kann der
calico-node-Pod nicht auf dem Workerknoten gestartet werden10.176.48.106.NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ... calico-kube-controllers-656c5785dd-kc9x2 1/1 Running 0 25h 10.176.48.107 10.176.48.107 <none> <none> calico-node-mkqbx 0/1 CrashLoopBackOff 1851 25h 10.176.48.106 10.176.48.106 <none> <none> coredns-7b56dd58f7-7gtzr 0/1 ContainerCreating 0 25h 172.30.99.82 10.176.48.106 <none> <none> -
Rufen Sie die IDs der Workerknoteneinträge für
calico-nodeab. Kopieren Sie nur die IDs für die IP-Adressen der Workerknoten, die Sie im vorherigen Schritt abgerufen haben.calicoctl get nodes -o wide -
Löschen Sie die Workerknoteneinträge mithilfe der IDs. Nach dem Löschen der Workerknoteneinträge sorgt der Calico-Controller dafür, dass die
calico-node-Pods auf die neuen Workerknoten umgestellt werden.calicoctl delete node <node_ID> -
Stellen Sie sicher, dass die Pods für Kubernetes-Komponenten einschließlich der
calico-node-Pods jetzt betriebsbereit sind. Es kann einige Minuten dauern, bis diecalico-node-Pods umgestellt und neue Komponentenpods erstellt werden.Für 1.29 und spätere Versionen:
kubectl -n calico-system get podsFür 1.28 und früher:
kubectl -n kube-system get pods
Sie können diesen Fehler in Zukunft verhindern, indem Sie niemals sämtliche Workerknoten in Ihrem Cluster löschen. Behalten Sie immer mindestens einen aktiven Workerknoten in Ihrem Cluster bei. Wenn Sie Ingress verwenden, um Apps zugänglich zu machen, müssen sogar mindestens zwei Workerknoten pro Zone ausgeführt werden.