【发布时间】:2019-12-08 10:31:18
【问题描述】:
我对 Kuberetes 很陌生,之前我在 docker 上做过一些工作。我正在努力完成以下工作:
- 启动 Minikube
- 使用 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
仍然没有运气。我在这里做错了什么吗?
【问题讨论】:
-
您是否尝试使用
docker pull nginx手动拉取图像?我认为问题在于您无法从环境中的 docker hub 中提取图像。更改另一个您可以从中提取图像的注册表。 -
有错误消息表明在 minikube VM 中运行的 Docker 守护程序无法解析
registry-1.docker.io主机名,因为它配置为用于 DNS 解析的 DNS 名称服务器 (192.168.64.1:53) 拒绝连接。如果你执行minikube ssh然后运行nslookup hub.docker.com你会得到什么? -
我用 nslookup 信息更新了我的问题
-
令我感到奇怪的是,Docker 守护进程试图通过
192.168.64.1的名称服务器解析registry-1.docker.io,但是当您在 VM 上使用nslookup时,它使用的是10.12.192.22的名称服务器。我在网上搜索了“minkube Get registry-1.docker.io/v2: dial tcp:lookup registry-1.docker.io on 192.168.64.1:53”,发现有人发了this comment的问题,似乎和你的问题一样,而且似乎特定于xhyve。 -
@AmitKumarGupta 你的预感是正确的。这是一个 100% 的 XHyve 问题。重新安装 minikube 并将其配置为使用 Virtual box,一切看起来都很好。如果需要,您可以将评论转换为答案。
标签: docker kubernetes minikube