2016-11-15 66 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将使用本地构建的图像。

相关问题