- Authors

- Name
- Phillip Pham
- @ddppham
ContainerCreating hängt: Mount, Sandbox, CNI
TL;DR
ContainerCreating heißt: der Scheduler hat einen Node gewählt, der Container existiert noch nicht. Logs gibt es nicht. Die Events am Pod nennen den blockierenden Schritt:
kubectl describe pod POD
FailedMount ist Volume, Secret oder ConfigMap als Datei. FailedCreatePodSandBox ist CNI, Pause-Image oder die Runtime. Pulling ohne Ende ist doch das Image, auch wenn der Status noch nicht ImagePullBackOff heißt. Die Weiche davor: Pod startet nicht.
Schon geschedult, noch nicht gestartet
kubectl get pod POD -o wide zeigt einen Node. Damit sind Requests, Taints und Quota für diesen Versuch erledigt. Wer jetzt an nodeSelector dreht, ändert einen Pod, der den Node schon hat. Erst die Event-Zeile.
Mehrere Events können sich abwechseln: erst Mount, dann Sandbox, dann wieder Mount. Die jüngste Zeile mit Warning ist der aktuelle Blocker. Ältere Pulled heißen, dass das Image schon da ist und nicht mehr verdächtig.
FailedMount
Der häufigste Text: Secret oder ConfigMap „not found“, PVC „not bound“, oder der CSI-Attach läuft in einen Timeout.
Ein fehlendes Secret als Volume bleibt hier hängen. Dasselbe Secret als Env wird CreateContainerConfigError. Prüfen Sie volumeMounts gegen volumes im Spec, dann ob das Objekt im Namespace des Pods liegt.
Ein PVC auf Pending hält den Pod in ContainerCreating oder selbst auf Pending, je nachdem ob der Claim schon gebunden sein muss. volumeBindingMode: WaitForFirstConsumer ist normal, solange kein Pod da ist. Sobald dieser Pod da ist und der Claim Pending bleibt, weiter bei PVC Pending: Klasse, Provisioner, Zone.
FailedAttachVolume mit einer Zonen-Meldung heißt: das Volume liegt nicht in der Zone des Nodes. Der Pod muss auf einen Node dieser Zone, oder das Volume neu entstehen, nachdem der Pod dort geplant ist.
FailedCreatePodSandBox
Die Sandbox ist der Pause-Container plus das Netz des Pods. failed to setup network und CNI im Text: das CNI-Plugin auf diesem Node ist nicht bereit. Vergleichen Sie den Node mit einem, auf dem Pods laufen.
kubectl get pods -n kube-system -o wide
Calico, Cilium oder das Cloud-CNI müssen auf genau diesem Node Running sein. Ein Node ohne CNI-Pod produziert Sandbox-Fehler für jeden neuen Workload. Das ist ein Node-Problem, auch wenn der Node noch Ready sagt, weil die Bedingung nachzieht.
sandbox image und pull im Text: das Pause-Image kommt nicht von der Registry. Dieselbe Ursache wie ImagePull, nur für das Infrastruktur-Image. Rate-Limit, Proxy, falscher Mirror.
Wie lange ist „hängt“
Ein CSI-Volume braucht oft eine Minute, ein Cloud-Disk länger. Unter zwei Minuten ohne neues Event ist noch kein Defekt. Dieselbe Warning über mehrere Minuten, mit steigendem count in der Event-Zeile, ist einer. Events verschwinden nach etwa einer Stunde. Wer zu spät schaut, sieht einen ruhigen Pod, der trotzdem nicht startet. describe dann wiederholen, nachdem Sie einen neuen Versuch ausgelöst haben.
Quellen
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
Node NotReady: Kubelet, CNI und Conditions
Node NotReady: Conditions am Node lesen. Kubelet still, CNI nicht da, MemoryPressure oder DiskPressure. Pods auf diesem Node sind Symptom, nicht Ursache.
kubectl connection refused 6443 beheben
kubectl connection refused auf Port 6443: der API-Server antwortet nicht. kubeconfig, Kontext, Firewall, API-Prozess. Der Pod-Status kommt erst danach.
Error from server Forbidden: RBAC-Recht
kubectl Forbidden: Error from server (Forbidden) nennt User, Verb und Ressource. kubectl auth can-i zeigt das Recht, bevor jemand cluster-admin vergibt.
CreateContainerConfigError: Secret und ConfigMap
CreateContainerConfigError: fehlendes Secret, falscher Key oder Namespace. Der Container startet nicht, logs --previous bleibt leer. Das Event nennt das Objekt.
Kubernetes DNS fehlgeschlagen: CoreDNS, ndots
Kubernetes DNS fehlgeschlagen: CoreDNS-Pods, das Service-ClusterIP und ndots:5. Wann ein Name im Cluster auflöst und wann die NetworkPolicy UDP 53 schluckt.
Exit Code 1: die erste Zeile im Previous-Log
Exit Code 1 auf Kubernetes: die Anwendung beendet sich selbst. kubectl logs --previous zeigt die Zeile. Speicher, Image-Pull und SIGKILL sind andere Codes.
Exit Code 143: SIGTERM und Graceful Shutdown
Exit Code 143 ist SIGTERM: 128 plus 15. Beim Rollout ist das normal. Im Loop fehlt ein Handler oder die Grace-Period ist kürzer als der Stopp der Anwendung.
Ingress ohne Address: Controller und Class
Ingress ohne Address: kein Controller, falsche IngressClass oder der LoadBalancer dahinter bleibt Pending. ADDRESS leer ist der Controller, nicht das Backend.