k8s node节点重启docker后,所有该节点的容器无法运行解决方案

调度到该节点的pod,报错信息。'Error response from daemon: cgroup-parent for systemd cgroup should be a valid slice named as "xxx.slice"'
img
在对应node上发现所有容器都无法运行

观察系统日志,发现是cgroup设置的问题
img
继续排查/etc/docker/daemon.json 配置正确
img

网上查找解决方案
参考连接:https://blog.csdn.net/m0_48638643/article/details/126921849

最终解决方法

修改3个配置文件为systemd

vim /etc/docker/daemon.json
"exec-opts": ["native.cgroupdriver=systemd"]

2.vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
在KUBELET_KUBECONFIG_ARGS 后面追加 --cgroup-driver=systemd

Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=systemd"

3.vim /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.1"

然后重启kubelet

systemctl daemon-reload
systemctl restart kubelet

分析故障原因:
由于在master初始化集群之前没有配置cgroup driver为systemd出现的错误。

# 配置docker文件
[root@master ~]# cat /etc/docker/daemon.json 
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
 
 
# 配置k8s文件
# 编辑/etc/sysconfig/kubelet,添加下面的配置  
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"   # 若是没有指定就会自动降级别iptable