2016-11-15 82 views
8

我正嘗試使用Minikube,Docker Registry和演示節點項目創建本地Kubernetes部署。爲什麼在這個Kubernetes部署中出現ErrImagePull錯誤?

我做的第一件事是安裝Docker v 1.12.3,然後安裝Minikube v0.12.2。

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

然後,我通過運行此命令(經由this tutorial,僅在運行下面的第一個命令)

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

接着我跑這minikube命令創建本地kubernetes集羣創建的泊塢註冊表容器

我的項目結構如下:

. 
├── Dockerfile 
└── server.js 

和我Dockerfile看起來是這樣的:

FROM node:7.1.0 
EXPOSE 8080 
COPY server.js . 
CMD node server.js 

然後,我建立了自己的碼頭工人圖像並將其推到我的私人倉庫:

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

然後我試圖用這個命令運行部署:

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

但後來我得到這個:

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 

我想我可能會缺少某種碼頭註冊表身份驗證,但由於我使用谷歌搜索,我無法找到我理解的內容。有人能指點我正確的方向嗎?

編輯

使用ssh訪問的kubernetes VM bash,並通過使用該命令從我的私人註冊表拉hello-node圖像後:

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 

localhost:5000內使用正確的地址kubernetes主機虛擬機?

+0

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

回答

14

看起來你正在主機上運行註冊表。實際上,您需要在VM內運行註冊表。您可以通過在您的shell中首先運行此命令 eval $(minikube docker-env) ,將您的docker客戶端指向minikube VM內的docker守護程序。

然後,您可以在主機上運行docker build命令,但它會在VM內部生成。實際上,如果您的目標是簡單地運行本地版本的圖像,則應該運行eval $(minikube docker-env)指向虛擬機中的docker守護進程,並在您的pod YAML中設置imagePullPolicy: IfNotPresent。然後,如果可用,kubernetes將使用本地構建的圖像。

相關問題