8.6. 在节点上配置 Linux cgroup 版本
默认情况下,OpenShift Container Platform 在集群中使用 Linux 控制组群版本 1 (cgroup v1)。您可以通过编辑 node.config
对象切换到 Linux 控制组群版本 2 (cgroup v2)。在 OpenShift Container Platform 中启用 cgroup v2 禁用集群中的所有 cgroup 版本 1 控制器和层次结构。
cgroup v2 是 Linux cgroup API 的当前版本。cgroup v2 比 cgroup v1 提供多种改进,包括统一层次结构、更安全的子树委派、新功能,如 Pressure Stall Information,以及增强的资源管理和隔离。但是,cgroup v2 与 cgroup v1 具有不同的 CPU、内存和 I/O 管理特征。因此,在运行 cgroup v2 的集群上,一些工作负载可能会遇到内存或 CPU 用量差异。
- 如果您运行依赖于 cgroup 文件系统的第三方监控和安全代理,请将代理更新为支持 cgroup v2 的版本。
- 如果您配置了 cgroup v2,并将 cAdvisor 作为监控 pod 和容器的独立守护进程集运行,请将 cAdvisor 更新至 v0.43.0 或更高版本。
如果您部署 Java 应用程序,请使用完全支持 cgroup v2 的版本,如以下软件包:
- OpenJDK / HotSpot: jdk8u372, 11.0.16, 15 及更新版本
- IBM Semeru Runtimes: jdk8u345-b01, 11.0.16.0, 17.0.4.0, 18.0.2.0 及更新版本
- IBM SDK Java 技术版本(IBM Java): 8.0.7.15 及更新版本
8.6.1. 配置 Linux cgroup 复制链接链接已复制到粘贴板!
您可以通过编辑 node.config
对象来启用 Linux 控制组群版本 1 (cgroup v1) 或 Linux 控制组群版本 2 (cgroup v2)。默认值为 cgroup v1。
目前,cgroup v2 不支持禁用 CPU 负载均衡。因此,如果您启用了 cgroup v2,则可能无法从性能配置集中获取所需的行为。如果您使用 executeace 配置集,则不建议启用 cgroup v2。
先决条件
- 您有一个正在运行的 OpenShift Container Platform 集群,它使用版本 4.12 或更高版本。
- 以具有管理特权的用户身份登录集群。
流程
在节点上启用 cgroup v2:
编辑
node.config
对象:oc edit nodes.config/cluster
$ oc edit nodes.config/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
spec.cgroupMode
参数:node.config
对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
v2
为 cgroup v2 或v1
启用 cgroup v1。
验证
检查机器配置以查看是否添加了新的机器配置:
oc get mc
$ oc get mc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建新机器配置,如预期一样。
检查新的
kernelArguments
是否已添加到新机器配置中:oc describe mc <name>
$ oc describe mc <name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v1 的输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v2 的输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查节点以查看是否禁用了在节点上调度。这表示要应用更改:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 节点返回
Ready
状态后,为该节点启动 debug 会话:oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/host
设置为 debug shell 中的根目录:chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查节点上是否存在
sys/fs/cgroup/cgroup2fs
或sys/fs/cgroup/tmpfs
文件:stat -c %T -f /sys/fs/cgroup
$ stat -c %T -f /sys/fs/cgroup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v1 的输出示例
tmp2fs
tmp2fs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v2 的输出示例
cgroup2fs
cgroup2fs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow