1 k8s在安装calico网络插件时出现镜像拉取失败的情况
1.1 查看容器的pod
kubectl get pod -A
发现pod的状态为ErrImagePull 或者 ImagePullBackOff,这两个状态都表示镜像拉取失败。
区别总结:
状态 | 含义 | 触发原因 | 重试行为 |
---|---|---|---|
ErrImagePull | 拉取镜像失败,未进入退避状态。 | 镜像不存在、仓库不可达、权限问题等。 | 失败后 Kubernetes 会立即重试。 |
ImagePullBackOff | 拉取镜像失败且多次重试后进入退避状态,表示 Kubernetes 会暂停一段时间再重试。 | 由于多次失败导致的状态,通常和 ErrImagePull 状态持续发生有关。 | 在多次失败后,Kubernetes 会暂停一段时间再重试,避免过于频繁的重试。 |
1.2 查看拉取失败的pod的详细信息
kubectl describe pod <pod-name> -n kube-system
Events
部分显示类似的错误信息:
Failed to pull image "docker.io/calico/node:v3.20.6": rpc error: code = Unknown desc = Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 47.88.58.234:443: connect: connection refused
根据错误信息得知再拉取calico/node:v3.20.6镜像时出现了网络原因无法连接到docker.io的注册服务器。
1.3 去镜像站找到对应镜像
去https://docker.aityp.com/ 中找到对应的镜像,获取链接通过docker pull获取,再利用docker tag对镜像打标
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/node:v3.20.6
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/node:v3.20.6 docker.io/calico/node:v3.20.6
可能多个镜像出现拉取失败的情况,后续重复以上步骤即可。