Kubernetes atascado en la creación de contenedores

101

Un pod en mi clúster de Kubernetes está atascado en "ContainerCreating" después de ejecutar una creación. ¿Cómo veo los registros de esta operación para diagnosticar por qué está atascado? kubectl logsno parece funcionar ya que el contenedor debe estar en un estado no pendiente.

four43
fuente
kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/… es la documentación sobre las posibles fases. Lamentablemente no incluye ContainerCreating...
Xiong Chiamiov

Respuestas:

127

kubectl describe podsenumerará todos los eventos asociados con el pod, incluyendo extracción de imágenes, inicio de contenedores. Puede ser de ayuda.

Sreekanth Pothanis
fuente
55
¿Qué pasa si el contenedor se atascó en ContainerCreating sin ningún evento? para mí, los eventos se muestran como "Sin eventos".
Bob
1
Algunos eventos parecen tardar un tiempo en aparecer. Por ejemplo, un tiempo de espera que intenta montar un disco para mí toma aproximadamente 2 minutos antes de que aparezca como un evento.
jwadsack
8
Ocurre cuando estás usando secretos y no se encuentran (como un error tipográfico en el yaml o olvidaste crearlo antes). Para casi todos los demás errores posibles, obtiene estados de CrashLoopback o Error, pero con secretos simplemente se atasca en ContainerCreating, si describe el pod, verá al final un mensaje que dice que no se encontró el secreto, pero apenas dice Nada sobre el problema.
danius
Sí, generalmente no tienes ningún evento antes de que comience a hacer algo.
erikbwork
Me pasó esta mañana y fue un error tipográfico en un hostPath por un volumen. Yay teclado adhesivo.
Joe Block
4

En mi caso, el acceso de Docker a Internet fue bloqueado. Se resolvió usando un proxy ( usando el comentario de 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)

Luego, para verificar si Docker tiene acceso a Internet, ejecute:

$ docker pull tutum/hello-world

en el clúster (conéctese al clúster usando minikube ssh); Detenga el proceso si comienza a descargar.

Mi segundo problema fue una conexión lenta a internet. Dado que las imágenes ventana acoplable requeridos son del orden de 100 MB, ambos recipientes ventana acoplable y vainas Kubernetes permanecieron en \pausey ContainerCreatingUnidos por 30 minutos.

Para verificar si Docker está descargando las imágenes, ejecute:

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

en el clúster, que muestra los archivos de imagen temporales que se están descargando, de lo contrario está vacío.

Si está desarrollando en minikube y usando VPN, Docker puede usar su VPN a través de Fiddler . Es decir, la ventana acoplable se conectará al puerto ip: fiddler y el violinista se conectará a la VPN. De lo contrario, la VPN no se comparte entre su host y minikube VM.

usuario477273
fuente
Me mordió este error hoy. Sin embargo, todavía no estoy seguro de qué lo causó. Las cosas funcionaban bien un minuto y al siguiente, este problema surgió. Gracias por la corrección. Funcionó para mi.
Jim
0

La única vez que toqué esto fue porque mis declaraciones de recursos fueron accidentalmente muy muy pequeñas.

recursos: límites: cpu: 1000 m de memoria: 1024 M solicitudes: cpu: 1000 m de memoria: 1024 M

vs

recursos: límites: CPU: 1000 m de memoria: 1024 m solicitudes: CPU: 1000 m de memoria: 1024 m

capitalizando que m hace una gran diferencia en el uso de recursos. Estaba atrapado en ContainerCreating porque no le había dado suficiente memoria a mi contenedor.

Luis Felipe Moura Pereira De S
fuente