尝试在 Minikube 中运行任何 Pod 都将失败并出现ErrImagePull
错误:
$ kubectl get pods
utils 0/1 ErrImagePull 0 8m57s
查看 pod 的日志,显示 HTTP 请求超时:
$ kubectl logs utils
显示的内容大致如下:
kubelet, minikube Failed to pull image "massenz/dnsutils:1.1": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
但是,直接从 Docker 运行容器也可以正常工作:
$ docker run --rm -d massenz/dnsutils:1.1 sleep infinity
成功并且可以访问容器(例如,通过exec /bin/bash
)。
答案1
这个问题是由于“本机” MacOS 虚拟机管理程序 VM 没有外部连接造成的。
已报告这里。
修复起来很简单,但需要先安装 VirtualBox,然后使用它作为 VM 驱动程序:
$ minikube start --vm-driver virtualbox
此后,启动 pod 就可以正常工作了:
$ kubectl apply -f utils.yaml
pod/utils created
$ kubectl get pods -w
NAME READY STATUS RESTARTS AGE
utils 0/1 ContainerCreating 0 5s
utils 1/1 Running 0 9s