![]() | ![]() |
Heute gab es wieder einen nicht gleich nachvollziehbaren Fehler im Kubernetes Cluster. Ich habe hier einen OKD (OpenShift) Cluster 4.5 mit 3 Mastern und 2 Workern laufen.
Nachdem vermehrt Knoten nicht mehr verfügbar waren, habe ich den kompletten Cluster einmal durchgestartet. Leider hat bei einigen Knoten der initiierte Reboot sehr lang gebraucht. Daher habe ich einzelne Knoten kurzerhand per Hardreset durchgestartet.
Nachdem alle Knoten neu gestartet und im Status „Ready“ waren, konnte einer der Knoten keine Pods starten
Also ging es zum Troubleshooting auf dem Node und im Cluster. Zunächst schaue ich welche Pods nicht gestartet werden können:
oc get pod --all-namespaces -o wide
Und sehe, dass alle auf dem gleichen Host nicht gestartet werden können. Also etwas genauer auf den Pod schauen:
oc describe pod -n <namespacevompod> <podname>
Und sehe hier folgenden Fehler:
Failed to create pod sandbox: rpc error: code = Unknown desc = error creating pod sandbox with name "XXXX": layer not known
Das bringt mich jetzt noch nicht viel weiter. Also gehe ich per SSH auf den Knoten. Hier schaue ich ob alle Dienste laufen
systemctl
Und sehe, dass der Dienst „nodeip-configuration.service“ failed ist. Also hier genauer nachschauen:
systemctl status nodeip-configuration.service
Und hier kommt folgende Fehlermeldung zum Vorschein:
podman[11387]: Error: error creating container storage: layer not known
Jetzt wird zumindes schon einmal klarer, welcher „layer“ hier gemeint ist. Soltle also ein storage layer sein. Also nochmal Google gefragt und einen Eintrag gefunden:
https://bugzilla.redhat.com/show_bug.cgi?id=1857224
Ok. Anscheinend hat der Knoten den Hard Reset übel genommen und es ist unter „/var/lib/containers“ nicht mehr alles sauber. Also folge ich der Empfehlung:
systemctl stop kubelet
systemctl stop crio
rm -rf /var/lib/containers/
systemctl start crio
systemctl start kubelet
Und voila, die Pods auf dem Knoten können wieder starten!

