Vraag Kubernetes heeft vastgehouden aan ContainerCreating


Een pod in mijn Kubernetes-cluster is vastgelopen op "ContainerCreating" na het uitvoeren van een create. Hoe zie ik logboeken voor deze bewerking om vast te stellen waarom deze vastloopt? kubectl logs lijkt niet te werken omdat de container in een niet-geplande staat moet zijn.


57
2017-10-13 20:40


oorsprong


kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/... is de documentatie over de mogelijke fasen. Helaas bevat het niet ContainerCreating... - Xiong Chiamiov


antwoorden:


kubectl describe pods zal een lijst maken van alle gebeurtenissen die horen bij de pod, inclusief het trekken van afbeeldingen en het starten van containers. Het kan van pas komen.


73
2017-10-22 06:38



wat als de container bij ContainerCreating zonder enige gebeurtenis vastzit? voor mij worden de evenementen getoond als "Geen evenementen." - Bob
Sommige gebeurtenissen lijken een tijdje te duren om te verschijnen. Een time-out die probeert een schijf voor mij te koppelen duurt bijvoorbeeld ongeveer 2 minuten voordat deze als een gebeurtenis verschijnt. - jwadsack
Het gebeurt wanneer je geheimen gebruikt en ze niet worden gevonden (zoals een typfout in de yaml of je bent vergeten deze eerder te maken). Voor de bijna alle andere mogelijke fouten krijgt het CrashLoopback- of Error-toestanden maar met geheimen komt het gewoon vast te zitten in ContainerCreating. Als je de pod beschrijft, zie je aan het eind een bericht dat het geheim niet is gevonden, maar het zegt amper niets over het probleem. - danius
Ja, meestal heb je geen evenementen voordat hij iets gaat doen. - erikbwork


In mijn geval was de toegang van Docker tot internet geblokkeerd. Het werd opgelost met behulp van een proxy (met de opmerking van sandylss):

  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)

Voer vervolgens uit om te controleren of Docker toegang heeft tot internet:

$ docker pull tutum/hello-world

in het cluster (maak verbinding met het cluster via minikube ssh); stop het proces als het begint met downloaden.

Mijn tweede probleem was een trage internetverbinding. Aangezien de vereiste dockerafbeeldingen in de orde van 100 MB zijn, zijn zowel dockercontainers als Kubernetes-pods ingeschakeld gebleven \pause en ContainerCreating staat voor 30 minuten.

Ga als volgt te werk om te controleren of Docker de afbeeldingen downloadt:

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

in de cluster, die de tijdelijke afbeeldingsbestand [s] toont die worden gedownload, anders leegmaken.

Als je je ontwikkelt in minikube en VPN gebruikt, kan docker je VPN via gebruiken vioolspeler. Dat wil zeggen, docker wordt verbonden met de ip: -poort van fiddler en fiddler is verbonden met de VPN. Anders wordt VPN niet gedeeld tussen uw host en minikube VM.


1
2017-07-10 03:41