通过 minikube 创建部署时 Kubectl 抛出 ImagePullBackOff 错误

Shi*_*hal 5 go docker kubernetes kubectl minikube

尝试从映像创建部署

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10

然后kubectl get pods使用以下命令检查 hello-minikube pod 的日志

kubectl pod describe <pod-name>抛出以下错误

  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  <unknown>          default-scheduler  Successfully assigned default/hello-minikube-797f975945-dmq26 to minikube
  Warning  Failed     42s                kubelet, minikube  Failed to pull image "k8s.gcr.io/echoserver:1.10": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: dial tcp: lookup k8s.gcr.io on 192.168.64.1:53: read udp 192.168.64.3:56747->192.168.64.1:53: read: connection refused
  Warning  Failed     27s                kubelet, minikube  Failed to pull image "k8s.gcr.io/echoserver:1.10": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: dial tcp: lookup k8s.gcr.io on 192.168.64.1:53: read udp 192.168.64.3:48279->192.168.64.1:53: read: connection refused
  Normal   BackOff    16s (x2 over 42s)  kubelet, minikube  Back-off pulling image "k8s.gcr.io/echoserver:1.10"
  Warning  Failed     16s (x2 over 42s)  kubelet, minikube  Error: ImagePullBackOff
  Normal   Pulling    4s (x3 over 42s)   kubelet, minikube  Pulling image "k8s.gcr.io/echoserver:1.10"
  Warning  Failed     4s (x3 over 42s)   kubelet, minikube  Error: ErrImagePull
  Warning  Failed     4s                 kubelet, minikube  Failed to pull image "k8s.gcr.io/echoserver:1.10": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: dial tcp: lookup k8s.gcr.io on 192.168.64.1:53: read udp 192.168.64.3:50616->192.168.64.1:53: read: connection refused
Run Code Online (Sandbox Code Playgroud)

Shi*_*hal 3

此错误可以使用以下方法解决:

  1. 检查是否有任何 docker 机器正在运行docker-machine ls

  2. 如果不存在机器,则使用以下命令创建一台docker-machine create <machine-name>

  3. 然后使用获取这台机器的IPdocker-machine ip <machine-name>

  4. 然后首先使用删除任何现有的 minikube 集群,minikube delete然后使用重新开始minikube start --vm-driver="virtualbox" --insecure-registry="docker-machine IP":80

  5. 然后运行kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10并查看日志,会显示镜像拉取成功。