1.配置kubelet启动参数
将以下内容添加到kubelet的启动参数中:
--kube-reserved cpu=200m,memory=512M \
--kube-reserved-cgroup=/system.slice/kubelet.service \
--system-reserved cpu=1,memory=2Gi,ephemeral-storage=10Gi \
--system-reserved-cgroup=/system.slice \
--cgroup-driver=cgroupfs --eviction-hard=memory.available<500Mi,nodefs.available<10%
2.修改系统systemd配置文件
vim /etc/systemd/system.conf
#JoinControllers=cpu,cpuacct net_cls,net_prio
JoinControllers=cpu,cpuacct,cpuset,net_cls,net_prio,memory
备注:
初始情况下系统默认并没有加入cpuset的controller,所以需要修改此选项,修改完后, 重新生成 initrd(重启)
3.为system.slice创建cpuset子系统
mkdir -p /sys/fs/cgroup/cpuset/system.slice
1
备注:
可以看到未创建前system.slice这个cgroup是没有cpuset的子系统的:
find /sys/fs/cgroup -name system.slice
/sys/fs/cgroup/devices/system.slice
/sys/fs/cgroup/memory/system.slice
/sys/fs/cgroup/blkio/system.slice
/sys/fs/cgroup/cpu,cpuacct/system.slice
/sys/fs/cgroup/systemd/system.slice
所以需要这一步手工创建,否则启动kubelet会报找不到相应cgroup的错误。
4.为kubelet.service创建cpuset子系统
mkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.service
1
备注:
可以看到未创建前是没有kubelet相关的子系统的:
find /sys/fs/cgroup -name kubelet.service
/sys/fs/cgroup/devices/system.slice/kubelet.service
/sys/fs/cgroup/memory/system.slice/kubelet.service
/sys/fs/cgroup/blkio/system.slice/kubelet.service
/sys/fs/cgroup/cpu,cpuacct/system.slice/kubelet.service
/sys/fs/cgroup/systemd/system.slice/kubelet.service
所以需要这一步手工创建,否则启动kubelet会报找不到相应cgroup的错误。
5.重启kubelet
以上这些都做好后,重启kubelet服务即可
6.具体原理稍后整理
|
|