Windows Docker Desktop的Kubernetes出现ErrImageNeverPull错误如何解决
问题原因
ErrImageNeverPull错误的触发逻辑为:当容器配置imagePullPolicy: Never时,kubelet不会尝试从任何镜像仓库拉取镜像,只会使用调度节点本地已存在的镜像。从你提供的docker images输出可以看到,Deployment中声明的两个镜像thoughts_server:latest、thoughts_backend_db:latest不存在于本地镜像列表中,因此触发该错误。
解决方案(本地镜像使用场景)
- 第一步:构建缺失的本地镜像
分别进入两个服务对应Dockerfile所在的工作目录,执行镜像构建命令:
构建后端服务镜像:
docker build -t thoughts_server:latest .
构建数据库镜像:
docker build -t thoughts_backend_db:latest .
注意:Windows版Docker Desktop默认将本地镜像共享给内置Kubernetes集群,只要使用Docker Desktop绑定的docker命令构建,镜像即可被K8s节点识别。如果启用了WSL2后端,请勿使用WSL环境中单独安装的docker服务构建,否则镜像会存储在WSL独立的运行时中无法被K8s读取。
- 第二步:验证镜像存在
执行命令确认两个镜像已成功构建:
docker images | findstr "thoughts"
能看到两条对应镜像的输出即为构建成功。
- 第三步:重启Deployment触发Pod重建
执行命令重启工作负载,让kubelet重新读取本地镜像:
kubectl rollout restart deployment thoughts-backend -n example
- 第四步:验证Pod状态
等待30秒左右执行命令查看Pod状态:
kubectl get pods -n example
正常情况下Pod会进入Running状态。
备选方案(使用镜像仓库场景)
如果你已经将对应镜像上传到公共/私有镜像仓库,可以直接修改Deployment配置:
- 将两个容器的
imagePullPolicy改为IfNotPresent或者Always - 将
image字段的值修改为镜像仓库的完整地址 - 重新apply配置即可。
内容的提问来源于stack exchange,提问作者myquest
相关产品推荐
相关产品推荐

