web-dev-qa-db-fra.com

Kubernetes coincé sur ContainerCreating

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

122
four43

kubectl describe pods listera tous les événements associés au pod, y compris l'extraction d'images, le démarrage de conteneurs. Cela pourrait être utile.

155
Sreekanth Pothanis
kubectl get events --all-namespaces  --sort-by='.metadata.creationTimestamp'

Plus d'informations pourraient être fournies lors des événements.

Dans mon cas, j'ai eu un événement lié à un pod:

default       13s         Warning   FailedMount               Pod          Unable to mount volumes for pod "restore-db-123-1-5f24s_default(9b7df264-2976-11ea-bb8f-42010a9a002c)": timeout expired waiting for volumes to attach or mount for pod "default"/"restore-db-123-1-5f24s". list of unmounted volumes=[nfsv]. list of unattached volumes=[nfsv default-token-hxrng]
4
Chris Stryczynski

Dans mon cas, l'accès de docker à Internet a été bloqué. Il 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 le docker a accès à Internet, exécutez:

$ docker pull tutum/hello-world

dans le cluster (connectez-vous au cluster en utilisant minikube ssh); arrêtez le processus s'il commence à télécharger.

Mon deuxième problème était une connexion Internet lente. Étant donné que les images de docker requises sont de l'ordre de 100 Mo, les conteneurs de docker et les pods Kubernetes sont restés dans les états \pause Et ContainerCreating 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 affiche le ou les fichiers image temporaires en cours de téléchargement, videz sinon.

Si vous développez dans minikube et utilisez VPN, docker peut utiliser votre VPN via fiddler . Autrement dit, le docker sera connecté au port ip: fiddler, et le fiddler est connecté au VPN. Sinon, le VPN n'est pas partagé entre votre hôte et la machine virtuelle minikube.

4
Esmailian

La seule fois où j'ai touché cela, c'est parce que mes déclarations de ressources étaient accidentellement très 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 que 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é assez de mémoire à mon conteneur.