web-dev-qa-db-fra.com

Minikube bloqué lors de la création du conteneur

J'ai récemment commencé à apprendre Kubernetes en utilisant Minikube localement sur mon Mac. Auparavant, je pouvais démarrer un cluster Kubernetes local avec Minikube 0.10.0, créer un tableau de bord de déploiement et affiché Kubernetes. 

Hier, j'ai essayé de supprimer le cluster et de tout refaire de zéro. Cependant, j'ai constaté que je ne pouvais pas obtenir les ressources déployées ni voir le tableau de bord. D'après ce que j'ai vu, tout semblait rester bloqué lors de la création du conteneur. 

Après avoir exécuté minikube start, il a signalé 

Starting local Kubernetes cluster...
Kubectl is now configured to use the cluster.

Lorsque j'ai exécuté kubectl get pods --all-namespaces, il a signalé (faites attention à la colonne STATUS):

kubectl get pods --all-namespaces
NAMESPACE     NAME                          READY     STATUS              RESTARTS   AGE
kube-system   kube-addon-manager-minikube   0/1       ContainerCreating   0          51s

docker ps n'a montré rien:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

minikube status m'indique que VM et le cluster sont en cours d'exécution:

minikubeVM: Running
localkube: Running

Si j'ai essayé de créer un déploiement et un analyseur automatique, on m'a dit qu'ils avaient été créés avec succès:

kubectl create -f configs
deployment "hello-minikube" created
horizontalpodautoscaler "hello-minikube-autoscaler" created

$ kubectl get pods --all-namespaces
NAMESPACE     NAME                             READY     STATUS              RESTARTS   AGE
default       hello-minikube-661011369-1pgey   0/1       ContainerCreating   0          1m
default       hello-minikube-661011369-91iyw   0/1       ContainerCreating   0          1m
kube-system   kube-addon-manager-minikube      0/1       ContainerCreating   0          21m

Lors de l'exposition du service, il a déclaré:

$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed

$ kubectl get service
NAME             CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
hello-minikube   10.0.0.32    <nodes>       8080/TCP   6s
kubernetes       10.0.0.1     <none>        443/TCP    22m

Lorsque j'ai essayé d'accéder au service, on m'a dit:

curl $(minikube service hello-minikube --url)
Waiting, endpoint for service is not ready yet...

docker ps n'a toujours rien montré. Il me semblait que tout était bloqué lors de la création d'un conteneur. J'ai essayé d'autres méthodes pour contourner ce problème:

  1. Mis à jour en minikube 0.11.0
  2. Utilisez le pilote xhyve au lieu du pilote Virtualbox
  3. Supprimez tout ce qui est mis en cache, comme ~/.minikube, ~/.kube et le cluster, puis réessayez.

Aucun d'entre eux n'a fonctionné pour moi.

Kubernetes est encore nouveau pour moi et j'aimerais savoir:

  1. Comment puis-je résoudre ce type de problème? 
  2. Quelle pourrait être la cause de ce problème?

Toute aide est appréciée. Merci.

12
nybon

Cela s'est avéré être un problème de réseau dans mon cas.

Le statut du pod est "ContainerCreating", et lors de la création du conteneur, l'image du menu fixe sera extraite de gcr.io, inaccessible en Chine (bloqué par GFW). La fois précédente, cela a fonctionné pour moi car il m'est arrivé de me connecter à un VPN.

6
nybon

Je n'ai pas essayé minikube mais j'utilise kubernetes. Avec les informations fournies, il est difficile de dire la cause du problème. Votre minikube n'a pas de problème pour créer des ressources mais ContainerCreating est un problème lié au démon docker ou à une communication incorrecte entre les démons kube-api et docker ou à un problème avec kubelet.

Vous pouvez essayer la commande suivante:

kubectl describe po POD_NAME

Cela vous donnera les événements du POD. Cela fournira peut-être un chemin vers la cause fondamentale du problème.

Vous pouvez également consulter les journaux de kubelet pour obtenir les événements.

3
srikanth peetha

Horizontalpodautoscaler (hpa) nécessite l'utilisation d'un tas. Pour que cela fonctionne, vous devrez exécuter heapster dans minikube. Vous pouvez toujours déboguer ces types de problèmes avec minikube logs ou de manière interactive via le tableau de bord disponible à minikube dashboard

Vous pouvez trouver les étapes pour exécuter heapster et grafana à l’adresse https://github.com/kubernetes/heapster

1
Matt Rickard

J'ai eu ce problème sous Windows, mais il était lié à un NTLM proxy. J'ai supprimé la minikube VM, puis je l'ai recréée avec les paramètres de proxy corrects pour mon installation CNTLM:

minikube start \
--docker-env http_proxy=http://10.0.2.2:3128 \
--docker-env https_proxy=http://10.0.2.2:3128 \
--docker-env no_proxy=localhost,127.0.0.1,::1,192.168.99.100

Voir https://blog.alexellis.io/minikube-behind-proxy/

0
Nathan

Pour moi, il faut plusieurs minutes avant de voir le problème ContainerCreating. Après avoir exécuté la commande suivante:

systemctl status kube-controller-manager.service

Je reçois cette erreur:

La synchronisation "default/redis-master-2229813293" a échoué avec l'impossibilité de créer des pods: aucun jeton d'API trouvé pour le compte de service "default", réessayez une fois le jeton créé et ajouté automatiquement au compte de service.

Il y a deux façons de résoudre ce problème:

  1. Définir le compte de service avec un jeton
  2. Supprimer le paramètre ServiceAccount de KUBE_ADMISSION_CONTROL dans api-server
0
onebraveman