8.6. 在节点上配置 Linux cgroup 版本
自 OpenShift Container Platform 4.14 起,OpenShift Container Platform 在集群中使用 Linux 控制组版本 2 (cgroup v2)。如果您在 OpenShift Container Platform 4.13 或更早版本中使用 cgroup v1,迁移到 OpenShift Container Platform 4.14 不会自动将 cgroup 配置更新至版本 2。全新安装 OpenShift Container Platform 4.14 默认将使用 cgroup v2。但是,您可以在安装时启用 Linux 控制组群版本 1 (cgroup v1)。
cgroup v2 是 Linux cgroup API 的当前版本。cgroup v2 比 cgroup v1 提供多种改进,包括统一层次结构、更安全的子树委派、新功能,如 Pressure Stall Information,以及增强的资源管理和隔离。但是,cgroup v2 与 cgroup v1 具有不同的 CPU、内存和 I/O 管理特征。因此,在运行 cgroup v2 的集群上,一些工作负载可能会遇到内存或 CPU 用量差异。
您可以根据需要在 cgroup v1 和 cgroup v2 之间更改。在 OpenShift Container Platform 中启用 cgroup v1 禁用集群中的所有 cgroup v2 控制器和层次结构。
- 如果您运行依赖于 cgroup 文件系统的第三方监控和安全代理,请将代理更新为支持 cgroup v2 的版本。
- 如果您配置了 cgroup v2,并将 cAdvisor 作为监控 pod 和容器的独立守护进程集运行,请将 cAdvisor 更新至 v0.43.0 或更高版本。
如果您部署 Java 应用程序,请使用完全支持 cgroup v2 的版本,如以下软件包:
- OpenJDK / HotSpot: jdk8u372, 11.0.16, 15 及更新版本
- NodeJs 20.3.0 或更高版本
- 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 v2。
在 Telco 中,因为缺少对 cgroup v2 的支持,使用 PerformanceProfile
进行低延迟、实时和 Data Plane Development Kit (DPDK) 工作负载的集群会自动恢复到使用 cgroup v1。如果您使用 PerformanceProfile
,则不支持启用 cgroup v2。
先决条件
- 您有一个正在运行的 OpenShift Container Platform 集群,它使用版本 4.12 或更高版本。
- 以具有管理特权的用户身份登录集群。
流程
在节点上配置所需的 cgroup 版本:
编辑
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
- 指定
v1
启用 cgroup v1,或v2
启用 cgroup v2。
验证
检查机器配置以查看是否添加了新的机器配置:
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 v2 的输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v1 的输出示例
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 v2 的输出示例
cgroup2fs
cgroup2fs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v1 的输出示例
tmpfs
tmpfs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow