Ich habe kürzlich angefangen, Kubernetes zu lernen, indem ich Minikube lokal in meinem Mac verwende. Zuvor konnte ich einen lokalen Kubernetes-Cluster mit Minikube 0.10.0 starten, eine Bereitstellung erstellen und das Kubernetes-Dashboard anzeigen.
Gestern habe ich versucht, den Cluster zu löschen und alles von Grund auf neu zu machen. Ich habe jedoch festgestellt, dass die Assets nicht bereitgestellt werden können und das Dashboard nicht angezeigt werden kann. Nach allem, was ich sah, schien alles bei der Containererstellung stecken zu bleiben.
Nachdem ich minikube start
lief, meldete es sich
Starting local Kubernetes cluster...
Kubectl is now configured to use the cluster.
Bei der Ausführung von kubectl get pods --all-namespaces
wurde Folgendes gemeldet (beachten Sie die Spalte 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
zeigte nichts an:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
minikube status
sagt mir, dass VM und der Cluster ausgeführt werden:
minikubeVM: Running
localkube: Running
Wenn ich versuchte, eine Bereitstellung und einen Autoscaler zu erstellen, wurde mir gesagt, dass sie erfolgreich erstellt wurden:
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
Bei der Veröffentlichung des Dienstes heißt es:
$ 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
Als ich versuchte, auf den Dienst zuzugreifen, wurde mir gesagt:
curl $(minikube service hello-minikube --url)
Waiting, endpoint for service is not ready yet...
docker ps
zeigte immer noch nichts. Es sah für mich aus, dass beim Erstellen eines Containers alles hängen blieb. Ich habe einige andere Möglichkeiten ausprobiert, um dieses Problem zu umgehen:
Keiner von ihnen arbeitete für mich.
Kubernetes ist noch neu für mich und ich würde gerne wissen:
Jede Hilfe wird geschätzt. Vielen Dank.
Es stellte sich in meinem Fall als Netzwerkproblem heraus.
Der Pod-Status lautet "ContainerCreating", und ich habe bei der Containererstellung festgestellt, dass das Docker-Image von gcr.io abgerufen wird, das in China nicht zugänglich ist (von GFW gesperrt). Vorher hat es für mich funktioniert, weil ich zufällig eine Verbindung zu einem VPN hergestellt habe.
Ich habe minikube
nicht ausprobiert, aber ich habe kubernetes
verwendet. Mit den bereitgestellten Informationen ist es schwierig, die Ursache des Problems zu sagen. Ihre minikube
hat keine Probleme beim Erstellen von Ressourcen, ContainerCreating
ist jedoch ein Problem im Zusammenhang mit dem docker
-Dämon oder einer nicht ordnungsgemäßen Kommunikation zwischen kube-api
und docker
-Dämon oder einem Problem mit kubelet
.
Sie können den folgenden Befehl versuchen:
kubectl describe po POD_NAME
Dadurch erhalten Sie die Ereignisse des POD. Möglicherweise gibt dies einen Pfad zur Ursache des Problems an.
Sie können auch die Protokolle von kubelet
überprüfen, um die Ereignisse abzurufen.
Der Horizontalpodautoscaler (hpa) benötigt einen Heapster. Sie müssen einen Heapster in Minikube ausführen, damit dies funktioniert. Sie können diese Probleme jederzeit mit minikube logs
oder interaktiv über das Dashboard unter minikube dashboard
debuggen.
Die Schritte zum Ausführen von Heapster und Grafana finden Sie unter https://github.com/kubernetes/heapster
Ich hatte dieses Problem unter Windows, aber es stand im Zusammenhang mit einem NTLM proxy
. Ich habe die minikube
VM gelöscht und dann mit den korrekten Proxy-Einstellungen für meine CNTLM
-Installation neu erstellt:
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
Bei mir dauert es einige Minuten, bis ich das ContainerCreating
-Problem sehe. Nachdem Sie den folgenden Befehl ausgeführt haben:
systemctl status kube-controller-manager.service
Ich erhalte diesen Fehler:
"Default/redis-master-2229813293" konnte nicht synchronisiert werden, da keine Pods erstellt werden konnten: Es wurde kein API-Token für das Dienstkonto "default" gefunden. Wiederholen Sie den Vorgang, nachdem das Token automatisch erstellt und dem Dienstkonto hinzugefügt wurde.
Es gibt zwei Möglichkeiten, dies zu lösen:
ServiceAccount
-Einstellung von KUBE_ADMISSION_CONTROL
im API-Server