kubernetes 尝试从Minikube上的Docker集线器中提取/运行Docker图像失败

zujrkrfu  于 2023-01-29  发布在  Kubernetes
关注(0)|答案(4)|浏览(206)

我是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

还是不走运。我做错什么了吗?

20jt8wwn

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 .工作正常,没有错误

ecbunoof

ecbunoof2#

在我的情况下,这是由于运行dnsmasq,一个dns服务器,在我的Mac上使用Homebrew,这导致dns请求在minikube内部失败。停止dnsmasq后,一切正常。

jhdbpxl9

jhdbpxl93#

我的本地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才是这种情况下的真正原因。

2nbm6dog

2nbm6dog4#

您已经:

  1. minukube正在使用默认设置运行。
  2. docker构建您的图像
    1.()已配置minikube以指向您的docker映像本地存储库
    现在minikube不能从公共的"容器"注册表中提取图像,比如docker hub。
    停止并启动minikube,然后将其指向本地Docker图像库。执行此操作(和(
    )此操作)的命令:
minikube stop
minikube start
minikube -p minikube docker-env
eval $(minikube -p minikube docker-env)

自从运行了上面的代码之后,我就可以通过在yaml规范中设置image: alpine来从hub.docker.come中提取nginx、alpine和frens。
这个问题只是我的网络连接出现了短暂的下降。所以如果你没有DNS/VPN/XHYVE并发症,它就这样停止了,修复就很容易了。

相关问题