Warum bekomme ich ErrImagePull Fehler in diesem Kubernetes-Bereitstellung?
Ich versuche, erstellen Sie eine lokale Kubernetes-Bereitstellung mit Minikube, Docker-Registrierung, und eine demo-Knoten-Projekt.
Das erste, was ich Tat, war, installieren Sie das Andockfenster v 1.12.3, dann Minikube v0.12.2.
Dann erstellte ich ein Docker-Registry-container ein, indem Sie diesen Befehl ausführen (über dieses tutorial, nur der erste Befehl unten)
docker run -d -p 5000:5000 --name registry registry:2
Weiter lief ich diese minikube Befehl zum erstellen einer lokalen kubernetes-cluster:
minikube start --vm-driver="virtualbox" --insecure-registry="0.0.0.0:5000"
Meine Projektstruktur sieht wie folgt aus:
.
├── Dockerfile
└── server.js
und meine Dockerfile sieht wie folgt aus:
FROM node:7.1.0
EXPOSE 8080
COPY server.js .
CMD node server.js
Dann baute ich mein eigenes Andockfenster Bild und schob es auf mein privates repository:
docker build -t hello-node .
docker tag hello-node localhost:5000/hello-node
docker push localhost:5000/hello-node
Dann habe ich versucht, führen Sie eine Bereitstellung mit diesem Befehl:
kubectl run hello-node --image=localhost:5000/hello-node --port=8888
Aber dann bekomme ich dieses:
sudo kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default hello-node-3745105022-gzs5a 0/1 ErrImagePull 0 11m
kube-system kube-addon-manager-minikube 1/1 Running 4 10d
kube-system kube-dns-v20-2x64k 3/3 Running 12 10d
kube-system kubernetes-dashboard-mjpjv 1/1 Running 4 10d
Ich glaube, ich könnte fehlt eine gewisse Art von docker-registry-Authentifizierung, aber wie ich bin, googelte ich kann nicht finden, etwas, das ich verstehen. Könnte jemand bitte zeigen Sie mich in die richtige Richtung?
Bearbeiten
Nachdem mit ssh Zugang bash
auf dem kubernetes-VM und ziehen Sie die hello-node
Bild aus meiner privaten Registrierung, indem Sie diesen Befehl verwenden:
minikube ssh
Boot2Docker version 1.11.1, build master : 901340f - Fri Jul 1
22:52:19 UTC 2016
Docker version 1.11.1, build 5604cbe
docker@minikube:~$ sudo docker pull localhost:5000/hello-node
Using default tag: latest
Pulling repository localhost:5000/hello-node
Error while pulling image: Get http://localhost:5000/v1/repositories/hello-node/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused
Ist localhost:5000
die richtige Adresse, die in den kubernetes-host VM?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie die Registrierung auf dem host. In der Tat, müssen Sie führen Sie die Registrierung innerhalb der VM. Sie können zeigen Sie Ihre docker-client für den docker-daemon innerhalb des minikube VM mit dem folgenden Befehl den ersten
eval $(minikube docker-env)
in Ihrer shell.
Dann können Sie die docker-build-Befehl von Ihrem host, sondern es wird innerhalb der VM.
In der Tat, wenn es Ihr Ziel ist, führen Sie einfach die lokalen Versionen der Bilder, die Sie ausführen sollten, die
eval $(minikube docker-env)
zum docker-daemon in deiner VM, und legen Sie dieimagePullPolicy: IfNotPresent
in Ihrem pod YAML. Dann, kubernetes wird ein lokal gebaut-Bild, falls verfügbar.