废话少絮,直接进入主题
一、背景
服务器断电,重启后。部署服务提示如下内容:
(combined from similar events):
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container
"5bc5c07882a8b3c6912345678b79524fed145382d67deeb5534e588ca695e"
network for pod "cvec-service-t-648f57d594-dxvxn":
networkPlugin cni failed to set up pod "cvec-service-t-648f57d594-dxvxn_default"
network: open /run/flannel/subnet.env: no such file or directory
如下图所示:
二、处理过程
2.1首先查看了k8s的运行情况
如下,发现正常
kubectl get nodes
2.2其次查看网络插件的情况
通过命令查看
kubectl get pods -n kube-system
在kuboard中查看(通过选择kube-system命名空间可以查看)
如上所示:发现是拉取镜像失败导致。这里docker pull由于网络不通,拉取失败。查看本机镜像情况:发现是有对应镜像的。
[root@k8s01 softs]# docker images | grep flannel
quay.io/coreos/flannel v0.14.0 8522d622299c 3 years ago 67.9MB
jmgao1983/flannel latest ff281650a721 5 years ago 52.6MB
[root@k8s01 softs]#
故接着查看容器镜像的拉取策略:如下图:发现是Always
(此处就是坑了,该镜像5年前发布了latest的tag。基本不更新,使用Always简直是无话可说)
将上述 初始化容器 和 工作容器 的镜像拉取策略都改为IfNotPresent
模式,点击保存。发现网络插件运行情况恢复正常,如下图所示:
2.3再次查看程序容器运行情况
如下图:需要点击重启,发现立刻start成功。访问程序也是正常的。