错误信息:
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
Failed
create
pod
sandbox
:
rpc
error
:
code
=
Unknown
des
c = NetworkPlugin cni
failed
to set up
pod
OOMKilled:
Pod
的内存使用超出了 resources.limits 中的限制,被强制杀死。
CrashLoopBackoff:
Pod
进入崩溃-重启循环,重启间隔时间从 10 20 40 80 一直翻倍到上限 300 秒,然后以 300 秒为间隔无限重启。
Pod
一直 Pending: 这说明没有任何节点能满足
Pod
的要求,容器无法被调度。比如端口被别的容器用 hostPort 占用,节点有污点等。
Failed
Create
SandBox
:
Failed
create
pod
.
新装Kubernetes,创建一个新
Pod
,启动
Pod
遇到
Create
Pod
Sandbox
或Run
Pod
Sandbox
异常。查看日志
# journalctl --since 15:00:00 -u kubelet
Run
Pod
Sandbox
from runtime service
failed
:
rpc
error
:
code
=
Unknown
des
c =
failed
pull
ing ...
open /run/containerd/io.containerd.runtime.v2.task/
k8s
.io/6d3eb5b522c3ac340207ccc30bd52faa536875b9af380f53a98abaa74857fb50/log.json: no such file or directory解决:
更新libseccomp版本