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:
Aucun d'entre eux n'a fonctionné pour moi.
Kubernetes est encore nouveau pour moi et j'aimerais savoir:
Toute aide est appréciée. Merci.
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.
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.
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
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
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:
ServiceAccount
de KUBE_ADMISSION_CONTROL
dans api-server