Kubernetes blieb bei ContainerCreating

100

Ein Pod in meinem Kubernetes-Cluster bleibt nach dem Ausführen eines Erstellungsvorgangs auf "ContainerCreating" hängen. Wie kann ich Protokolle für diesen Vorgang anzeigen, um zu diagnostizieren, warum er nicht funktioniert? kubectl logsscheint nicht zu funktionieren, da sich der Container in einem nicht ausstehenden Zustand befinden muss.

four43
quelle
kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/… ist die Dokumentation zu den möglichen Phasen. Leider nicht enthalten ContainerCreating...
Xiong Chiamiov

Antworten:

126

kubectl describe podslistet alle mit dem Pod verbundenen Ereignisse auf, einschließlich des Ziehens von Bildern und des Startens von Containern. Es könnte hilfreich sein.

Sreekanth Pothanis
quelle
5
Was passiert, wenn der Container ohne Ereignisse bei ContainerCreating hängen bleibt? Für mich werden die Ereignisse als "Keine Ereignisse" angezeigt.
Bob
1
Einige Ereignisse scheinen einige Zeit in Anspruch zu nehmen. Zum Beispiel dauert es ca. 2 Minuten, bis ein Timeout versucht, eine Festplatte für mich bereitzustellen, bevor sie als Ereignis angezeigt wird.
Jwadsack
8
Es passiert, wenn Sie Geheimnisse verwenden und diese nicht gefunden werden (wie ein Tippfehler im yaml oder Sie haben vergessen, sie vorher zu erstellen). Bei fast allen anderen möglichen Fehlern werden CrashLoopback- oder Error-Zustände angezeigt, aber bei Geheimnissen bleibt ContainerCreating stecken. Wenn Sie den Pod beschreiben, wird ganz am Ende eine Meldung angezeigt, die besagt, dass das Geheimnis nicht gefunden wurde, es jedoch kaum besagt nichts über das problem.
Danius
Ja, normalerweise hast du keine Events bevor er anfängt etwas zu tun.
Erikbwork
Ist mir heute Morgen passiert und es war ein Tippfehler in einem HostPath für einen Band. Ja, klebrige Tastatur.
Joe Block
4

In meinem Fall war der Zugang des Hafenarbeiters zum Internet gesperrt. Es wurde mit einem Proxy gelöst ( mit Sandylss Kommentar ):

  1. minikube stop
  2. minikube delete
  3. export http_proxy=http://user:pass@ip:port
  4. export https_proxy=http://user:pass@ip:port
  5. export no_proxy=192.168.99.0/24
  6. minikube start --logtostderr --v=0 --bootstrapper=localkube --vm-driver hyperv 
      --hyperv-virtual-switch "Primary Virtual Switch" --docker-env HTTP_PROXY=$http_proxy \
      --docker-env HTTPS_PROXY=$https_proxy --docker-env NO_PROXY=$no_proxy
    
  7. export no_proxy=$no_proxy,$(minikube ip)
  8. export NO_PROXY=$no_proxy,$(minikube ip)

Führen Sie dann Folgendes aus, um zu überprüfen, ob der Docker Zugriff auf das Internet hat:

$ docker pull tutum/hello-world

im Cluster (verbinden Sie sich mit dem Cluster minikube ssh); Beenden Sie den Vorgang, wenn der Download gestartet wird.

Mein zweites Problem war die langsame Internetverbindung. Da die erforderlichen Docker Bilder in der Größenordnung von 100 MB sind, blieben beide Docker - Container und Kubernetes Schoten in \pauseund ContainerCreatingerklärt für 30 Minuten.

Führen Sie Folgendes aus, um zu überprüfen, ob Docker die Bilder herunterlädt:

$ ls -l /var/lib/docker/tmp

In dem Cluster, in dem die temporären Bilddateien angezeigt werden, die heruntergeladen werden, ist das Feld ansonsten leer.

Wenn Sie in Minikube entwickeln und VPN verwenden, kann Docker Ihr VPN über Fiddler verwenden . Das heißt, der Docker wird mit dem ip: port des Fiddlers verbunden, und der Fiddler ist mit dem VPN verbunden. Andernfalls wird VPN nicht zwischen Ihrem Host und der Minikube-VM geteilt.

user477273
quelle
Habe mich heute an diesem Bug beteiligt. Ich bin mir immer noch nicht sicher, was es verursacht hat. In einer Minute ging es gut und in der nächsten tauchte dieses Problem auf. Vielen Dank für die Lösung. Es hat bei mir funktioniert.
Jim
0

Das einzige Mal, dass ich dies traf, war, weil meine Ressourcendeklarationen versehentlich sehr, sehr klein waren.

Ressourcen: Grenzen: CPU: 1000M Speicher: 1024M Anforderungen: CPU: 1000M Speicher: 1024M

vs

ressourcen: grenzen: cpu: 1000m speicher: 1024m anforderungen: cpu: 1000m speicher: 1024m

Die Aktivierung von m macht einen großen Unterschied in der Ressourcennutzung. Ich steckte bei ContainerCreating fest, weil ich meinem Container nicht genügend Speicherplatz gegeben hatte.

Luis Felipe Moura Pereira De S
quelle