我是Kuberetes的新手,之前我和Docker一起做过一些工作。我正在努力完成以下工作:
1.启动Minikube
1.使用Kube-ctl从Docker hub旋转一个Docker映像。
我启动了minikube,看起来它们已经启动并运行了。然后我传递以下命令
kubectl run nginx --image=nginx(请注意,我的机器上没有这个映像,我希望k8为我获取它)
现在,当我这样做时,它会旋转Pod,但状态为ImagePullBackOff
。因此,我对它运行kubectl describe pod
命令,结果如下所示:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 8m default-scheduler Successfully assigned default/ngix-67c6755c86-qm5mv to minikube
Warning Failed 8m kubelet, minikube Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.64.1:53: read udp 192.168.64.2:52133->192.168.64.1:53: read: connection refused
Normal Pulling 8m (x2 over 8m) kubelet, minikube Pulling image "nginx"
Warning Failed 8m (x2 over 8m) kubelet, minikube Error: ErrImagePull
Warning Failed 8m kubelet, minikube Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.64.1:53: read udp 192.168.64.2:40073->192.168.64.1:53: read: connection refused
Normal BackOff 8m (x3 over 8m) kubelet, minikube Back-off pulling image "nginx"
Warning Failed 8m (x3 over 8m) kubelet, minikube Error: ImagePullBackOff
然后我四处搜索,看看是否有人遇到过类似的问题,结果发现有些人遇到过,他们确实通过使用更多的标志重新启动minikube来解决它,这些标志看起来如下所示:minikube start --vm-driver="xhyve" --insecure-registry="$REG_IP":80
当我在Minikube内部执行nslookup
时,它确实解析了以下信息:
Server: 10.12.192.22
Address: 10.12.192.22#53
Non-authoritative answer:
hub.docker.com canonical name = elb-default.us-east-1.aws.dckr.io.
elb-default.us-east-1.aws.dckr.io canonical name = us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com.
Name: us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com
Address: 52.205.36.130
Name: us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com
Address: 3.217.62.246
Name: us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com
Address: 35.169.212.184
还是不走运。我做错什么了吗?
4条答案
按热度按时间20jt8wwn1#
该错误消息表明,在minikube虚拟机中运行的Docker守护程序无法解析
registry-1.docker.io
主机名,因为配置用于DNS解析的DNS名称服务器(192.168.64.1:53
)正在拒绝连接。令我感到奇怪的是,Docker守护程序正在尝试通过192.168.64.1
上的名称服务器解析registry-1.docker.io
,但当您在VM上执行nslookup
时,它'我在互联网上搜索了“minkube Getregistry-1.docker.io/v2:dial tcp:lookup registry-1.docker.io on 192.168.64.1:53”,发现了一个问题,有人发表了这个评论,似乎与您的问题相同,似乎是xhyve
特有的。在这条评论中,这个人说:
这个问题看起来确实像是virtualbox中没有出现的xhyve问题。
以及
切换到virtualbox为我修复了这个问题。
我停止了minikube,删除了它,在没有
--vm-driver=xhyve
的情况下启动了它(minikube默认使用virtualbox驱动程序),然后docker build -t hello-node:v1 .
工作正常,没有错误ecbunoof2#
在我的情况下,这是由于运行
dnsmasq
,一个dns服务器,在我的Mac上使用Homebrew,这导致dns请求在minikube内部失败。停止dnsmasq
后,一切正常。jhdbpxl93#
我的本地
minikube
设置出现了这个问题,我无法提取添加到简单部署清单中的任何映像。尝试执行以下测试:
只有在重新启动
minikube
后才有可能或修复。也许dnsmasq
才是这种情况下的真正原因。2nbm6dog4#
您已经:
1.()已配置minikube以指向您的docker映像本地存储库
现在minikube不能从公共的"容器"注册表中提取图像,比如docker hub。
停止并启动minikube,然后将其指向本地Docker图像库。执行此操作(和()此操作)的命令:
自从运行了上面的代码之后,我就可以通过在yaml规范中设置
image: alpine
来从hub.docker.come中提取nginx、alpine和frens。这个问题只是我的网络连接出现了短暂的下降。所以如果你没有DNS/VPN/XHYVE并发症,它就这样停止了,修复就很容易了。