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.
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.
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]
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 ):
minikube stop
minikube delete
export http_proxy=http://user:pass@ip:port
export https_proxy=http://user:pass@ip:port
export no_proxy=192.168.99.0/24
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
export no_proxy=$no_proxy,$(minikube ip)
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.
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.