使用前提
1)节点操作系统使用Alibaba Cloud Linux 3.2104 或更高版本。
2)确保内核版本支持cgroup v2机制。可以通过运行以下命令来检查:
grep cgroup /proc/filesystems
如果看到了“cgroup2”这一行,则说明内核支持cgroup v2。
3) 启用cgroup v2需要在多个方面进行配置和调整,因此需要谨慎处理。在实际应用中,建议先进行充分的测试,确保应用程序和系统的稳定性和可靠性。
启用步骤
1)登录到每一个节点上, 运行如下命令:
grubby --update-kernel=ALL --args=systemd.unified_cgroup_hierarchy=1
2) 通过以下命令确认:
cat /etc/default/grub |grep systemd.unified_cgroup_hierarchy
应当可以看到GRUB_CMDLINE_LINUX的值包括systemd.unified_cgroup_hierarchy=1。
3) 注意, 需要重启该节点。
4) 重新登录节点后, 修改 kubelet启动配置文件 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf, 手动禁用了一个 featuregate (--feature-gates=LocalStorageCapacityIsolation=false), 确认参数修改如下:
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS $KUBELET_CUSTOMIZED_ARGS --feature-gates=LocalStorageCapacityIsolation=false --container-runtime=remote --container-runtime-endpoint=/var/run/containerd/containerd.sock
5) 重新加载kubelet服务配置:
systemctl daemon-reload
6) 重新启动kubelet服务:
systemctl restart kubelet
验证结果
确认启用cgroupv2
1) 重新登录该节点之后, 判断是否启用cgroupv2。 运行如下命令查看cgroup控制器列表:
cat /sys/fs/cgroup/cgroup.controllers
应当返回类似结果:
cpuset cpu io memory hugetlb pids rdma
2)使用如下命令查看当前系统已经挂载的 cgroup2 文件系统:
mount |grep cgroup2
应当返回类似的输出结果:
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime)
3) 验证cgroup v2是否正常。可以使用以下命令来检查cgroup v2是否正常运行:
cat /sys/fs/cgroup/kubepods.slice/kubepods-besteffort.slice/cpu.max
如果能够看到一个数字(表示CPU使用率),则表明cgroup v2已经成功启用。
确认kubelet运行正常
查看kubelet运行日志确认正常:
journalctl -u kubelet -f
总结
以上是在阿里云容器服务ACK下启用cgroup v2的基本步骤,实际应用中可能需要进行更多的配置和调整。
总之,启用cgroup v2需要在多个方面进行配置和调整,因此需要谨慎处理。在实际应用中,建议先进行充分的测试,确保应用程序和系统的稳定性和可靠性。