首页 > 解决方案 > K8s MiniKube 无法从 docker 读取图像并给出 I/O 错误

问题描述

嗨,我是 minikube/k8s 的新手,正在尝试在 pod 中设置第一份工作。我在 Windows 上运行并在拉取图像时不断出错。

我的 docker 已经有我在 job.yaml 中使用过的图像,但是 minikube 失败了

事件:
  类型原因年龄来自消息
  ---- ------ ---- ---- --------
  正常计划 28 秒 default-scheduler 成功将 default/say-something-blbwp 分配给 minikube
  正常拉取 27s kubelet、minikube 拉取镜像“java”
  警告 Failed 17s kubelet, minikube Failed to pull image "java": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1 192.168.67.65:53 上的 .docker.io:读取 udp 192.168.67.70:58499->192.168.67.65:53:i/o 超时
  警告 Failed 17s kubelet, minikube Error: ErrImagePull
  Normal BackOff 17s kubelet, minikube Back-off pull image "java"
  警告 Failed 17s kubelet, minikube Error: ImagePullBackOff

这是我的 job.yaml 文件

api版本:批处理/v1
种类:工作
元数据:
 名称:说点什么
规格:
 模板:
   元数据:
     名称:说点什么
   规格:
     容器:
     - 名称:说点什么
       图片:java
       imagePullPolicy: IfNotPresent
       命令:[System.out.println("ZXZAA:")]
     重启策略:OnFailure

码头工人图像

存储库标签图像 ID 创建大小
hello-world 最新 bf756fb1ae65 7 个月前 13.3kB
java 最新 d23bdf5b1b1b 3 年前 643MB

有人可以指导我缺少什么吗?我需要在注册表部分进行任何特定设置吗?

标签: dockerkubernetesminikube

解决方案


为了解决 kubelet, minikube Error: ImagePullBackOff 我更改了 docker 设置,创建了 docker ID

重新启动 docker 桌面并使用资源 -> 网络 -> DNS 服务器 -> 手动 DNS 配置为 8.8.8.8 并从主机文件中删除过时的 Ips,如https://github.com/docker/for-win/issues/4884中所述# 之后它工作正常并且能够拉取图像

@David Maze 是对的,我们需要为 java 安装 openjdk,我们需要将我们的应用程序部署为映像。

@Wiktor 如果您想通过 K8s 设置 java 应用程序,您可以参考 https://www.oreilly.com/content/how-to-manage-docker-containers-in-kubernetes-with-java/


推荐阅读