docker - 尝试从 Minikube 上的 docker hub 拉取/运行 docker 镜像失败
问题描述
我对 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
当我nslookup
在 Minikube 中进行操作时,它会通过以下信息解决:
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
仍然没有运气。我在这里做错了什么吗?
解决方案
有错误消息表明在 minikube VM 中运行的 Docker 守护程序无法解析registry-1.docker.io
主机名,因为它配置为用于 DNS 解析 ( 192.168.64.1:53
) 的 DNS 名称服务器拒绝连接。令我感到奇怪的是,Docker 守护进程正试图registry-1.docker.io
通过名称服务器解析,192.168.64.1
但是当您nslookup
在 VM 上使用名称服务器时,它使用的是10.12.192.22
. 我在 Internet 上搜索“minkube Get registry-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 .
工作正常,没有错误
推荐阅读
- d3.js - 我在哪里可以找到适合折线图的标签放置算法?
- javascript - Mongoose 聚合获取计数并将新值附加到查询结果
- laravel - Paypal API 订阅创建返回 400 错误请求响应“名称”,但请求的格式与文档中的一样
- java - Maven 在编译时消耗整个内存并导致 OutOfMemoryException
- javascript - 将我的 HTML 表格中的两个单元格相乘,并使用 javascript 自动将结果放在第三个单元格中。没有jQuery
- blockchain - 如果智能合约/DAO 无法轻松更新,它们如何在现实世界的混乱中幸存下来?
- postgresql - 如何使用 LAG 函数将列转换为 to_char ('mm/dd/yyyy') 格式
- go - golang 获取第二天 00:00:00 时间戳
- delphi-2010 - 如何将信息添加到delphi确定的对话框中
- spring - 交易/提交后的番石榴事件总线发布