在私有环境中搭建了k8s集群(opensuse15.1 + kubernetes 1.18 + cri-o 1.17),k8s和应用的镜像均在本地通过 podman 导入,
底层 OCI 使用的是 cri-o。
在测试过程中发现每次 node 节点重启后都会有一些镜像丢失,基本上 kube-proxy 和 flannel 每次都会丢失,
有的时候会有更多的镜像丢失。分析这些丢失的镜像很有规律,不是随机丢的,也没有发现其他文件丢失的情况,所以排除文件系统故障,怀疑可能是某些进程干的。于是禁止了比较可疑的kubelet服务,再次重启发现没有丢失镜像。检查 /usr/lib/systemd/system/kubelet.service 文件,看到 ExecStart=/usr/bin/kubelet ,这是个shell脚本,打开这个脚本加入一行 sleep 60,目的是系统启动后在启动真正的kubelet程序前我先检查一下镜像的情况:
#!/bin/sh
# Loader Script for Multi-Version Kubelet arrangement introduced to openSUSE in March 2020
sleep 60 ### 先休眠 60秒
source /etc/sysconfig/kubeletif [ -z "$KUBELET_VER" ]
then
echo "ERROR: KUBELET_VER= not defined in /etc/sysconfig/kubelet"
exit 1
else
/usr/bin/kubelet$KUBELET_VER "$&#