Frage Kubernetes klebte auf ContainerCreating


Ein Pod in meinem Kubernetes-Cluster bleibt nach dem Ausführen eines Create auf "ContainerCreating" hängen. Wie sehe ich Protokolle für diesen Vorgang, um zu diagnostizieren, warum er feststeckt? kubectl logs scheint nicht zu funktionieren, da der Container in einem nicht ausstehenden Status sein muss.


57
2017-10-13 20:40


Ursprung


kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/... ist die Dokumentation über die möglichen Phasen. Leider beinhaltet es nicht ContainerCreating... - Xiong Chiamiov


Antworten:


kubectl describe pods listet alle mit dem Pod verbundenen Ereignisse auf, einschließlich Ziehen von Bildern, Starten von Containern. Es könnte hilfreich sein.


73
2017-10-22 06:38



Was passiert, wenn der Container ohne Ereignisse bei ContainerCreating stecken bleibt? Für mich werden die Ereignisse als "Keine Ereignisse" angezeigt. - Bob
Einige Ereignisse scheinen eine Weile zu dauern. Zum Beispiel dauert ein Timeout, der versucht, einen Datenträger für mich zu mounten, etwa 2 Minuten, bevor er als Ereignis angezeigt wird. - jwadsack
Es passiert, wenn Sie Geheimnisse verwenden und sie nicht gefunden werden (wie ein Tippfehler im Yaml oder Sie haben vergessen, es vorher zu erstellen). Für die meisten anderen möglichen Fehler bekommt es CrashLoopback oder Error States, aber mit Secrets bleibt es einfach in ContainerCreating stecken, wenn Sie den Pod beschreiben, dann sehen Sie ganz am Ende eine Nachricht, dass das Geheimnis nicht gefunden wurde, aber es sagt kaum nichts über das Problem. - danius
Ja, normalerweise haben Sie keine Ereignisse, bevor er etwas anfängt. - erikbwork


In meinem Fall wurde der Zugang des Hafenarbeiters zum Internet blockiert. Es wurde mit einem Proxy (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)

Um zu überprüfen, ob Docker Zugriff auf das Internet hat, führen Sie Folgendes aus:

$ docker pull tutum/hello-world

im Cluster (Verbindung zum Cluster mit minikube ssh); Stoppen Sie den Prozess, wenn es mit dem Herunterladen beginnt.

Mein zweites Problem war eine langsame Internetverbindung. Da die erforderlichen Docker-Images in der Größenordnung von 100 MB liegen, blieben sowohl die Docker-Container als auch die Kubernetes-Pods erhalten \pause und ContainerCreating Staaten für 30 Minuten.

Um zu überprüfen, ob Andockfenster die Bilder herunterlädt, führen Sie Folgendes aus:

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

in dem Cluster, der die temporären Bilddateien [s] anzeigt, die heruntergeladen werden, andernfalls leer.

Wenn Sie in Minikube entwickeln und VPN verwenden, kann Docker Ihr VPN über verwenden Geiger. Das bedeutet, docker wird mit dem fiddler-Port ip: verbunden, und fiddler ist mit dem VPN verbunden. Andernfalls wird VPN zwischen Ihrem Host und der minikube-VM nicht freigegeben.


1
2017-07-10 03:41