金仓KCA/KCP认证备考指南:模拟题与真题高效复习路径
2026/10/14 6:50:58
首先执行以下命令,获取镜像拉取失败的详细错误信息(这是定位问题的核心):
# 查看 Pod 详细事件(重点看 Events 部分)kubectl describe pod nginx-test# 也可以直接过滤镜像拉取相关日志kubectl events --for pod/nginx-test|grep-i pull执行后重点关注Failed to pull image后的具体报错,常见原因有:
nginx:1.25-alpine不存在)这是最常见的原因,尤其是内网环境或服务器未配置外网代理:
# 1. 先在节点上手动测试拉取镜像(验证网络)ctr images pull docker.io/nginx:1.25-alpine# 如果提示 "network error" 或超时,说明网络不通# 解决方案 A:使用国内镜像源(推荐)# 删除原有失败的 Podkubectl delete pod nginx-test# 重新创建 Pod,使用阿里云镜像源kubectl run nginx-test --image=registry.cn-hangzhou.aliyuncs.com/google_containers/nginx:1.25-alpine --port=80# 解决方案 B:配置 containerd 镜像加速(永久生效)# 编辑 containerd 配置文件vi/etc/containerd/config.toml# 在 [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 下添加:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint=["https://registry.cn-hangzhou.aliyuncs.com"]# 重启 containerd 生效systemctl restart containerd# 然后删除原有 Pod 重新创建kubectl delete pod nginx-test kubectl run nginx-test --image=nginx:1.25-alpine --port=80如果镜像标签不存在(比如nginx:1.25-alpine打错),会提示manifest not found:
# 改用稳定的镜像版本(推荐用无版本的 latest 或确认存在的版本)kubectl delete pod nginx-test# 方案 1:使用最新稳定版kubectl run nginx-test --image=nginx:latest --port=80# 方案 2:使用官方长期支持版本kubectl run nginx-test --image=nginx:1.24-alpine --port=80如果 containerd 服务异常,也会导致镜像拉取失败:
# 检查 containerd 状态systemctl status containerd# 重启 containerdsystemctl restart containerd# 清理 containerd 缓存(可选)ctr images prune -a执行完上述操作后,等待 1-2 分钟,检查 Pod 状态:
kubectl get pods# 正常输出应显示:# NAME READY STATUS RESTARTS AGE# nginx-test 1/1 Running 0 30s在节点上手动拉取镜像,能快速定位问题:
# 使用 containerd 手动拉取ctr images pull docker.io/nginx:latest# 如果拉取成功,再创建 Pod 就不会有问题# 拉取成功后会显示:unpacking completedImagePullBackOff本质是镜像拉取失败,优先通过kubectl describe pod查看具体错误。nginx:latest等稳定镜像版本。