Kubernetes bloqué sur ContainerCreating

102

Un pod de mon cluster Kubernetes est bloqué sur "ContainerCreating" après l'exécution d'un create. Comment puis-je voir les journaux de cette opération afin de diagnostiquer pourquoi elle est bloquée? kubectl logsne semble pas fonctionner car le conteneur doit être dans un état non en attente.

quatre43
la source
kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/… est la documentation sur les phases possibles. Malheureusement, cela ne comprend pas ContainerCreating...
Xiong Chiamiov

Réponses:

128

kubectl describe podslistera tous les événements associés au pod, y compris le tirage d’images, le démarrage de conteneurs. Cela pourrait être utile.

Sreekanth Pothanis
la source
5
Que se passe-t-il si le conteneur reste bloqué dans ContainerCreating sans événement? pour moi, les événements sont indiqués comme "Aucun événement".
Bob
1
Certains événements semblent prendre un certain temps à se manifester. Par exemple, un délai d'attente pour tenter de monter un disque pour moi prend environ 2 minutes avant qu'il n'apparaisse comme un événement.
Jwadsack
8
Cela se produit lorsque vous utilisez des secrets et qu’ils ne sont pas trouvés (comme une faute de frappe dans le yaml ou si vous avez oublié de le créer auparavant). Pour presque toutes les autres erreurs possibles, les états CrashLoopback ou Error sont générés, mais avec les secrets, il reste bloqué dans ContainerCreating. Si vous décrivez le pod, vous verrez tout à la fin un message indiquant que le secret n'a pas été trouvé, mais il indique à peine rien sur le problème.
danius
Oui, d'habitude, il n'y a pas d'événements avant qu'il ne commence à faire quelque chose.
erikbwork
Cela m’est arrivé ce matin et c’était une faute de frappe dans un hostPath pour un volume. Yay clavier collant.
Joe Block
4

Dans mon cas, l'accès de docker à Internet était bloqué. Cela a été résolu en utilisant un proxy (en utilisant le commentaire 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)

Ensuite, pour vérifier si Docker a accès à Internet, lancez:

$ docker pull tutum/hello-world

dans le cluster (se connecter au cluster en utilisant minikube ssh); arrêtez le processus si le téléchargement commence.

Mon deuxième problème était la connexion Internet lente. Étant donné que les images de docker requises sont de l'ordre de 100 Mo, les deux conteneurs de docker et les gousses Kubernetes sont restés dans \pauseet ContainerCreatingprécise pendant 30 minutes.

Pour vérifier si docker télécharge les images, exécutez:

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

dans le cluster, qui montre le ou les fichiers image temporaires en cours de téléchargement, vides sinon.

Si vous développez dans un mini cube et utilisez un VPN, docker peut utiliser votre VPN via un violoneur . C'est-à-dire que le menu fixe sera connecté à l'adresse ip: port du violoniste, et que le violoniste est connecté au VPN. Sinon, le VPN n'est pas partagé entre votre hôte et la VM minikube.

utilisateur477273
la source
Je me suis fait mordre par ce bug aujourd'hui. Je ne sais toujours pas ce qui l’a provoquée. Les choses fonctionnaient bien une minute et la suivante, cette question a surgi. Merci pour la réparation. Cela a fonctionné pour moi.
Jim
0

La seule fois où j'ai frappé c'est parce que mes déclarations de ressources étaient accidentellement très petites.

ressources: limites: cpu: 1000m mémoire: 1024M requêtes: cpu: 1000m mémoire: 1024M

contre

ressources: limites: cpu: 1000m mémoire: 1024m requêtes: cpu: 1000m mémoire: 1024m

capitaliser cela m fait une très grande différence dans l'utilisation des ressources. J'étais bloqué sur ContainerCreating parce que je n'avais pas donné suffisamment de mémoire à mon conteneur.

Luis Felipe Moura Pereira De S
la source