2016-11-15 1 views
8

Ich versuche, eine lokale Kubernetes-Bereitstellung mit Minikube, Docker Registry und einem Demo-Node-Projekt zu erstellen.Warum erhalte ich in dieser Kubernetes-Implementierung einen ErrImagePull-Fehler?

Als erstes habe ich Docker v 1.12.3, dann Minikube v0.12.2 installiert.

Dann habe ich einen Container Docker Registry mit diesem Befehl ausgeführt wird (via this tutorial, nur unter dem ersten Befehl ausgeführt wird)

docker run -d -p 5000:5000 --name registry registry:2 

Next ich diesen minikube Befehl lief einen lokalen Kubernetes Cluster zu erstellen:

minikube start --vm-driver="virtualbox" --insecure-registry="0.0.0.0:5000" 

Mein sieht Projektstruktur 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 meine eigene Docker Bild und schob es auf meiner privaten Repository:

:

docker build -t hello-node . 
docker tag hello-node localhost:5000/hello-node 
docker push localhost:5000/hello-node 

Dann habe ich versucht, einen Einsatz mit diesem Befehl ausgeführt werden soll

kubectl run hello-node --image=localhost:5000/hello-node --port=8888 

Aber dann bekomme ich diese:

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 denke, ich könnte eine Art von Docker Registry-Authentifizierung fehlen, aber während ich googlen kann ich nicht etwas finden, das ich verstehe. Könnte mir bitte jemand in die richtige Richtung zeigen?

bearbeiten

Nach ssh mit dem hello-node Bild von meiner privaten Registrierung zuzugreifen bash auf den Kubernetes VM und ziehen Sie mit diesem Befehl:

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 
[email protected]:~$ 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 innerhalb verwenden die kubernetes Host-VM?

+0

http://stackoverflow.com/q/36874880/2051454 –

Antwort

14

Es sieht so aus, als ob Sie die Registrierung auf dem Host ausführen. In der Tat müssen Sie die Registrierung in der VM ausführen. Sie können Ihren Docker-Client auf den Docker-Dämon in der Minikube-VM verweisen, indem Sie zuerst diesen Befehl eval $(minikube docker-env) in Ihrer Shell ausführen.

Dann können Sie den Befehl docker build auf Ihrem Host ausführen, aber er wird innerhalb der VM erstellt.

Wenn Ihr Ziel ist, einfach die lokale Version Ihrer Bilder auszuführen, sollten Sie eval $(minikube docker-env) ausführen, um auf den Docker-Dämon in Ihrer VM zu zeigen, und imagePullPolicy: IfNotPresent in Ihrem Pod YAML festlegen. Dann wird Kubernetes ein lokal erstelltes Bild verwenden, wenn es verfügbar ist.

Verwandte Themen