尝试从 Minikube 上的 docker hub pull/run docker 图像失败
Trying to pull/run docker images from docker hub on Minikube fails
我是 Kuberetes 的新手,我之前用 docker 做过一些工作。我正在努力完成以下工作:
- 启动 Minikube
- 使用 Kube-ctl 从 docker hub 启动一个 docker 图像。
我启动了 minikube,看起来一切正常 运行ning。然后我通过以下命令
kubectl 运行 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
仍然没有运气。我这里有什么地方做错了吗?
错误消息表明 minikube VM 中的 Docker 守护程序 运行 无法解析 registry-1.docker.io
主机名,因为它配置的 DNS 名称服务器用于 DNS 解析(192.168.64.1:53
) 拒绝连接。 Docker 守护进程试图通过位于 192.168.64.1
的名称服务器解析 registry-1.docker.io
但当您 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",发现有人提出 this comment 的问题,似乎与您的问题相同,而且似乎特定于 xhyve
。
在那条评论中,此人说:
This issue does look like an xhyve issue not seen with virtualbox.
和
Switching to virtualbox fixed this issue for me.
I stopped minikube, deleted it, started it without --vm-driver=xhyve
(minikube uses virtualbox driver by default), and then docker build -t hello-node:v1 .
worked fine without errors
在我的例子中,它是由 运行 dnsmasq
,一个 dns 服务器引起的,在我的 Mac 上使用 Homebrew,这导致 minikube 内的 DNS 请求失败。停止后 dnsmasq
,一切正常。
我的本地 minikube
设置遇到了这个问题,我无法提取添加到简单部署清单中的任何图像。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test1 0/1 ImagePullBackOff 0 68s
尝试执行以下测试:
apiVersion: v1
kind: Pod
metadata:
name: test1
labels:
site: blog
spec:
containers:
- name: web
image: nginx:latest
仅在重新启动 minikube
后才有可能或已修复。
在这种情况下,也许 dnsmasq
才是真正的原因。
我是 Kuberetes 的新手,我之前用 docker 做过一些工作。我正在努力完成以下工作:
- 启动 Minikube
- 使用 Kube-ctl 从 docker hub 启动一个 docker 图像。
我启动了 minikube,看起来一切正常 运行ning。然后我通过以下命令
kubectl 运行 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
仍然没有运气。我这里有什么地方做错了吗?
错误消息表明 minikube VM 中的 Docker 守护程序 运行 无法解析 registry-1.docker.io
主机名,因为它配置的 DNS 名称服务器用于 DNS 解析(192.168.64.1:53
) 拒绝连接。 Docker 守护进程试图通过位于 192.168.64.1
的名称服务器解析 registry-1.docker.io
但当您 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",发现有人提出 this comment 的问题,似乎与您的问题相同,而且似乎特定于 xhyve
。
在那条评论中,此人说:
This issue does look like an xhyve issue not seen with virtualbox.
和
Switching to virtualbox fixed this issue for me.
I stopped minikube, deleted it, started it without
--vm-driver=xhyve
(minikube uses virtualbox driver by default), and thendocker build -t hello-node:v1 .
worked fine without errors
在我的例子中,它是由 运行 dnsmasq
,一个 dns 服务器引起的,在我的 Mac 上使用 Homebrew,这导致 minikube 内的 DNS 请求失败。停止后 dnsmasq
,一切正常。
我的本地 minikube
设置遇到了这个问题,我无法提取添加到简单部署清单中的任何图像。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test1 0/1 ImagePullBackOff 0 68s
尝试执行以下测试:
apiVersion: v1
kind: Pod
metadata:
name: test1
labels:
site: blog
spec:
containers:
- name: web
image: nginx:latest
仅在重新启动 minikube
后才有可能或已修复。
在这种情况下,也许 dnsmasq
才是真正的原因。