错误信息:

Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image "k8s.gcr.io/pause:3.2": failed to pull image "k8s.gcr.io/pause:3.2": failed to pull and unpack image "k8s.gcr.io/pause:3.2": failed to resolve reference "k8s.gcr.io/pause:3.2": failed to do request: Head "https://k8s.gcr.io/v2/pause/manifests/3.2": dial tcp 74.125.204.82:443: i/o timeout

# 查看本机的镜像
# k8s + docker
$ docker images
# k8s + containerd
$ crictl images

很明显是无法拉取 k8s.gcr.io/pause:3.2 这个镜像,但我们的k8s明明使用的事pause:3.5的版本,这可能是该k8s版本的一个bug

临时解决方案:

可以从国内镜像仓库来拉取谷歌的镜像,然后重新tag。

以阿里云为例,访问下面地址,可搜索自己拉取失败的镜像。

容器镜像服务 (aliyun.com)https://cr.console.aliyun.com/cn-hangzhou/instances/images例如解决上面的问题,我们就搜索pause

# 如果你的k8s使用的事docker客户端
$ docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
$ docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 

# 如果使用containerd自带客户端
$ crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
$ ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

推荐解决方案:

# 查看 kubelet 配置
$ systemctl status -l kubelet

$ cd /var/lib/kubelet/
$ cp kubeadm-flags.env kubeadm-flags.env.ori

# 把 k8s.gcr.io/pause:3.3 改成 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2

$ cat /var/lib/kubelet/kubeadm-flags.env

$ KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2"

# 重启 kubelet 服务
$ systemctl daemon-reload
$ systemctl restart kubelet

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐