为什么在这个Kubernetes部署中出现ErrImagePull错误?
我正尝试使用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主机虚拟机?
看起来你正在主机上运行注册表。实际上,您需要在VM内运行注册表。您可以通过在您的shell中首先运行此命令 eval $(minikube docker-env)
,将您的docker客户端指向minikube VM内的docker守护程序。
然后,您可以在主机上运行docker build命令,但它会在VM内部生成。实际上,如果您的目标是简单地运行本地版本的图像,则应该运行eval $(minikube docker-env)
指向虚拟机中的docker守护进程,并在您的pod YAML中设置imagePullPolicy: IfNotPresent
。然后,如果可用,kubernetes将使用本地构建的图像。
http://stackoverflow.com/q/36874880/2051454 –