Cgroup不支持pid资源

Posted by 胡伟煌 on 2021-06-23

问题描述

机器内核版本较低,kubelet启动异常,报错如下:

1
Failed to start ContainerManager failed to initialize top level QOS containers: failed to update top level Burstable QOS cgroup : failed to set supported cgroup subsystems for cgroup [kubepods burstable]: Failed to find subsystem mount for required subsystem: pids

原因分析

低版本内核的cgroup不支持pids资源的功能,

1
2
3
4
5
6
7
8
9
10
11
12
cat /proc/cgroups
#subsys_name hierarchy num_cgroups enabled
cpuset 5 6 1
cpu 2 76 1
cpuacct 2 76 1
memory 4 76 1
devices 10 76 1
freezer 7 6 1
net_cls 3 6 1
blkio 8 76 1
perf_event 9 6 1
hugetlb 6 6 1

正常机器的cgroup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@host:~# cat /proc/cgroups
#subsys_name hierarchy num_cgroups enabled
cpuset 5 17 1
cpu 7 80 1
cpuacct 7 80 1
memory 12 80 1
devices 10 80 1
freezer 2 17 1
net_cls 4 17 1
blkio 8 80 1
perf_event 6 17 1
hugetlb 11 17 1
pids 3 80 1 # 此处支持pids资源
oom 9 1 1

解决方案

1、升级内核版本,使得cgroup支持pids资源。

或者

2、将kubelet的启动参数添加 SupportPodPidsLimit=false,SupportNodePidsLimit=false

1
2
3
4
5
6
vi /etc/systemd/system/kubelet.service

# 添加 kubelet 启动参数
--feature-gates=... ,SupportPodPidsLimit=false,SupportNodePidsLimit=false \

systemctl daemon-reload && systemctl restart kubelet.service

文档参考:



支付宝打赏 微信打赏

赞赏一下