17.7. 为 vDU 应用程序工作负载验证单节点 OpenShift 集群调整
在部署虚拟分布式单元 (vDU) 应用程序前,您需要调整并配置集群主机固件和各种其他集群配置设置。使用以下信息来验证集群配置以支持 vDU 工作负载。
17.7.1. vDU 集群主机的建议固件配置 复制链接链接已复制到粘贴板!
使用下表为在 OpenShift Container Platform 4.12 上运行的 vDU 应用程序配置集群主机固件的基础。
下表是 vDU 集群主机固件配置的一般建议。具体固件设置将取决于您的要求和特定的硬件平台。固件的自动设置不会被零接触置备管道处理。
固件设置 | 配置 | 描述 |
---|---|---|
HyperTransport (HT) | Enabled | HyperTransport (HT) 总线是由 AMD 开发的总线技术。HT 提供主机内存中组件与其他系统外围之间的高速链接。 |
UEFI | Enabled | 为 vDU 主机启用从 UEFI 引导。 |
CPU Power 和性能策略 | 性能 | 设置 CPU 电源和性能策略,以优化系统以提高能源效率。 |
非核心频率扩展 | Disabled | 禁用 Uncore Frequency 扩展,以防止单独设置 CPU 的非内核部分和频率。 |
Uncore Frequency | 最大值 | 将 CPU 的非内核部分(如缓存和内存控制器)设置为操作最多可能的频率。 |
性能限制 | Disabled | 禁用性能 P-limit 以防止处理器的 Uncore 频率协调。 |
增强的 Intel® SpeedStep Tech | Enabled | 启用增强的 Intel SpeedStep,以便系统动态调整处理器消耗和降低主机中功耗和 heat 生产的核心频率。 |
Intel® Turbo Boost Technology | Enabled | 为基于 Intel 的 CPU 启用 Turbo Boost Technology,允许处理器内核比底层操作频率更快运行(如果它们低于 power、current 和 temperature 规格限制)。 |
Intel 配置的 TDP | Enabled | 为 CPU 启用 Thermal Design Power (TDP) |
可配置 TDP 级别 | 2 级 | TDP 级别设置特定性能评级所需的 CPU 功耗。TDP 级别 2 以功耗为代价以实现最稳定的性能水平。 |
节能 Turbo | Disabled | 禁用 Energy Efficient Turbo,以防止处理器使用基于能源效率的策略。 |
硬件 P-State | Enabled 或 Disabled |
启用 OS 控制的 P-States 以允许节能配置。禁用 |
软件包 C-State | C0/C1 状态 | 使用 C0 或 C1 状态将处理器设置为完全活动状态 (C0) 或停止在软件中运行的 CPU 内部时钟 (C1)。 |
C1E | Disabled | CPU Enhanced Halt (C1E) 是 Intel 芯片中的节能功能。禁用 C1E 可防止操作系统在不活跃时向 CPU 发送 halt 命令。 |
处理器 C6 | Disabled | C6 节能程序是 CPU 功能,可自动禁用空闲 CPU 内核和缓存。禁用 C6 可提高系统性能。 |
子 NUMA 集群 | Disabled | 子 NUMA 集群将处理器内核、缓存和内存划分为多个 NUMA 域。禁用这个选项可以提高对延迟敏感工作负载的性能。 |
在主机的固件中启用全局 SR-IOV 和 VT-d 设置。这些设置与裸机环境相关。
启用 C-states
和 OS 控制的 P-States
来允许每个 pod 电源管理。
17.7.2. 推荐的集群配置来运行 vDU 应用程序 复制链接链接已复制到粘贴板!
运行虚拟化分布式单元 (vDU) 应用程序的集群需要高度调整和优化的配置。以下信息描述了在 OpenShift Container Platform 4.12 集群中支持 vDU 工作负载的各种元素。
17.7.2.1. 推荐的集群 MachineConfig CR 复制链接链接已复制到粘贴板!
检查您从 ztp-site-generate
容器中提取的 MachineConfig
自定义资源 (CR) 是否已在集群中应用。CR 可以在提取的 out/source-crs/extra-manifest/
文件夹中找到。
ztp-site-generate
容器中的以下 MachineConfig
CR 配置集群主机:
CR 文件名 | 描述 |
---|---|
|
配置集群的工作负载分区。安装集群时应用此 |
|
加载 SCTP 内核模块。这些 |
| 配置容器挂载命名空间和 Kubelet 配置。 |
| 配置集群的加速启动。 |
|
为集群配置 |
17.7.2.2. 推荐的集群 Operator 复制链接链接已复制到粘贴板!
运行虚拟化分布式单元 (vDU) 应用程序的集群需要以下 Operator,它是基准参考配置的一部分:
- Node Tuning Operator (NTO).与 Performance Addon Operator 一起提供的 NTO 软件包功能,现在是 NTO 的一部分。
- PTP Operator
- Cluster Network Operator
- Red Hat OpenShift Logging Operator
- Local Storage Operator
17.7.2.3. 推荐的集群内核配置 复制链接链接已复制到粘贴板!
始终使用集群中最新支持的实时内核版本。确保在集群中应用以下配置:
确保在集群性能配置集中设置以下
additionalKernelArgs
:spec: additionalKernelArgs: - "rcupdate.rcu_normal_after_boot=0" - "efi=runtime"
spec: additionalKernelArgs: - "rcupdate.rcu_normal_after_boot=0" - "efi=runtime"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保
Tuned
CR 中的performance-patch
配置集配置与相关PerformanceProfile
CR 中设置的隔离
CPU 的正确 CPU 隔离集,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 列出的 CPU 依赖于主机硬件配置,特别是系统和 CPU 拓扑中的可用 CPU 数量。
17.7.2.4. 检查实时内核版本 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 集群中,始终使用最新版本的 realtime 内核。如果您不确定集群中正在使用的内核版本,您可以将当前的 realtime 内核版本与发行版本进行比较。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您以具有
cluster-admin
权限的用户身份登录。 -
已安装
podman
。
流程
运行以下命令来获取集群版本:
OCP_VERSION=$(oc get clusterversion version -o jsonpath='{.status.desired.version}{"\n"}')
$ OCP_VERSION=$(oc get clusterversion version -o jsonpath='{.status.desired.version}{"\n"}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取发行镜像 SHA 号:
DTK_IMAGE=$(oc adm release info --image-for=driver-toolkit quay.io/openshift-release-dev/ocp-release:$OCP_VERSION-x86_64)
$ DTK_IMAGE=$(oc adm release info --image-for=driver-toolkit quay.io/openshift-release-dev/ocp-release:$OCP_VERSION-x86_64)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行发行镜像容器,并提取与集群当前发行版本一起打包的内核版本:
podman run --rm $DTK_IMAGE rpm -qa | grep 'kernel-rt-core-' | sed 's#kernel-rt-core-##'
$ podman run --rm $DTK_IMAGE rpm -qa | grep 'kernel-rt-core-' | sed 's#kernel-rt-core-##'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
4.18.0-305.49.1.rt7.121.el8_4.x86_64
4.18.0-305.49.1.rt7.121.el8_4.x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这是版本附带的默认 realtime 内核版本。
注意realtime 内核由内核版本中的字符串
.rt
表示。
验证
检查为集群当前发行版本列出的内核版本是否与集群中运行的实际实时内核匹配。运行以下命令检查运行的 realtime 内核版本:
打开到集群节点的远程 shell 连接:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 realtime 内核版本:
uname -r
sh-4.4# uname -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
4.18.0-305.49.1.rt7.121.el8_4.x86_64
4.18.0-305.49.1.rt7.121.el8_4.x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.7.3. 检查是否应用推荐的集群配置 复制链接链接已复制到粘贴板!
您可以检查集群是否正在运行正确的配置。以下流程描述了如何检查在 OpenShift Container Platform 4.12 集群中部署 DU 应用程序的各种配置。
先决条件
- 您已部署了集群,并根据 vDU 工作负载对其进行调整。
-
已安装 OpenShift CLI(
oc
)。 -
您已以具有
cluster-admin
权限的用户身份登录。
流程
检查默认 OperatorHub 源是否已禁用。运行以下命令:
oc get operatorhub cluster -o yaml
$ oc get operatorhub cluster -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
spec: disableAllDefaultSources: true
spec: disableAllDefaultSources: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查所有所需的
CatalogSource
资源是否标注了工作负载分区 (PreferredDuringScheduling
):oc get catalogsource -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.target\.workload\.openshift\.io/management}{"\n"}{end}'
$ oc get catalogsource -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.target\.workload\.openshift\.io/management}{"\n"}{end}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
certified-operators -- {"effect": "PreferredDuringScheduling"} community-operators -- {"effect": "PreferredDuringScheduling"} ran-operators redhat-marketplace -- {"effect": "PreferredDuringScheduling"} redhat-operators -- {"effect": "PreferredDuringScheduling"}
certified-operators -- {"effect": "PreferredDuringScheduling"} community-operators -- {"effect": "PreferredDuringScheduling"} ran-operators
1 redhat-marketplace -- {"effect": "PreferredDuringScheduling"} redhat-operators -- {"effect": "PreferredDuringScheduling"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 未注解的
CatalogSource
资源也会返回。在本例中,ran-operators
CatalogSource
资源没有被注解,它没有PreferredDuringScheduling
注解。
注意在正确配置的 vDU 集群中,只会列出注解的一个目录源。
检查是否为工作负载分区注解了所有适用的 OpenShift Container Platform Operator 命名空间。这包括 OpenShift Container Platform 核心安装的所有 Operator,以及参考 DU 调整配置中包含的附加 Operator 集合。运行以下命令:
oc get namespaces -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.workload\.openshift\.io/allowed}{"\n"}{end}'
$ oc get namespaces -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.workload\.openshift\.io/allowed}{"\n"}{end}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
default -- openshift-apiserver -- management openshift-apiserver-operator -- management openshift-authentication -- management openshift-authentication-operator -- management
default -- openshift-apiserver -- management openshift-apiserver-operator -- management openshift-authentication -- management openshift-authentication-operator -- management
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要对于工作负载分区,不得为其他 Operator 进行注解。在上一命令的输出中,应当列出额外的 Operator,而无需
--
分隔符右侧的任何值。检查
ClusterLogging
配置是否正确。运行以下命令:验证是否配置了适当的输入和输出日志:
oc get -n openshift-logging ClusterLogForwarder instance -o yaml
$ oc get -n openshift-logging ClusterLogForwarder instance -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查策展调度是否适合您的应用程序:
oc get -n openshift-logging clusterloggings.logging.openshift.io instance -o yaml
$ oc get -n openshift-logging clusterloggings.logging.openshift.io instance -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,检查 Web 控制台是否已禁用 (
managementState: Removed
):oc get consoles.operator.openshift.io cluster -o jsonpath="{ .spec.managementState }"
$ oc get consoles.operator.openshift.io cluster -o jsonpath="{ .spec.managementState }"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Removed
Removed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查集群节点中禁用了
chronyd
:oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查节点上的
chronyd
状态:chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl status chronyd
sh-4.4# systemctl status chronyd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:chronyd(8) man:chrony.conf(5)
● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:chronyd(8) man:chrony.conf(5)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用连接到
linuxptp-daemon
容器和 PTP Management Client (pmc
) 工具,检查 PTP 接口是否已成功同步到主时钟:运行以下命令,使用
linuxptp-daemon
pod 的名称设置$PTP_POD_NAME
变量:PTP_POD_NAME=$(oc get pods -n openshift-ptp -l app=linuxptp-daemon -o name)
$ PTP_POD_NAME=$(oc get pods -n openshift-ptp -l app=linuxptp-daemon -o name)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来检查 PTP 设备的同步状态:
oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET PORT_DATA_SET'
$ oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET PORT_DATA_SET'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下
pmc
命令来检查 PTP 时钟状态:oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET TIME_STATUS_NP'
$ oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET TIME_STATUS_NP'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查在
linuxptp-daemon-container
日志中有与/var/run/ptp4l.0.config
中的值对应的master offset
:oc logs $PTP_POD_NAME -n openshift-ptp -c linuxptp-daemon-container
$ oc logs $PTP_POD_NAME -n openshift-ptp -c linuxptp-daemon-container
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
phc2sys[56020.341]: [ptp4l.1.config] CLOCK_REALTIME phc offset -1731092 s2 freq -1546242 delay 497 ptp4l[56020.390]: [ptp4l.1.config] master offset -2 s2 freq -5863 path delay 541 ptp4l[56020.390]: [ptp4l.0.config] master offset -8 s2 freq -10699 path delay 533
phc2sys[56020.341]: [ptp4l.1.config] CLOCK_REALTIME phc offset -1731092 s2 freq -1546242 delay 497 ptp4l[56020.390]: [ptp4l.1.config] master offset -2 s2 freq -5863 path delay 541 ptp4l[56020.390]: [ptp4l.0.config] master offset -8 s2 freq -10699 path delay 533
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令检查 SR-IOV 配置是否正确:
检查
SriovOperatorConfig
资源中的disableDrain
值是否已设置为true
:oc get sriovoperatorconfig -n openshift-sriov-network-operator default -o jsonpath="{.spec.disableDrain}{'\n'}"
$ oc get sriovoperatorconfig -n openshift-sriov-network-operator default -o jsonpath="{.spec.disableDrain}{'\n'}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
true
true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查
SriovNetworkNodeState
同步状态是否为Succeeded
:oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o jsonpath="{.items[*].status.syncStatus}{'\n'}"
$ oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o jsonpath="{.items[*].status.syncStatus}{'\n'}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Succeeded
Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证为 SR-IOV 配置的每个接口下的虚拟功能(
Vfs
)预期数量和配置是否存在,并在.status.interfaces
字段中是正确的。例如:oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o yaml
$ oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查集群性能配置集是否正确。
cpu
和hugepages
部分将根据您的硬件配置而有所不同。运行以下命令:oc get PerformanceProfile openshift-node-performance-profile -o yaml
$ oc get PerformanceProfile openshift-node-performance-profile -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意CPU 设置取决于服务器上可用的内核数,应当与工作负载分区设置保持一致。
巨页
配置取决于服务器和应用程序。运行以下命令,检查
PerformanceProfile
是否已成功应用到集群:oc get performanceprofile openshift-node-performance-profile -o jsonpath="{range .status.conditions[*]}{ @.type }{' -- '}{@.status}{'\n'}{end}"
$ oc get performanceprofile openshift-node-performance-profile -o jsonpath="{range .status.conditions[*]}{ @.type }{' -- '}{@.status}{'\n'}{end}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Available -- True Upgradeable -- True Progressing -- False Degraded -- False
Available -- True Upgradeable -- True Progressing -- False Degraded -- False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查
Tuned
性能补丁设置:oc get tuneds.tuned.openshift.io -n openshift-cluster-node-tuning-operator performance-patch -o yaml
$ oc get tuneds.tuned.openshift.io -n openshift-cluster-node-tuning-operator performance-patch -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
cmdline=nohz_full=
中的 cpu 列表将根据您的硬件配置而有所不同。
运行以下命令,检查是否禁用了集群网络诊断:
oc get networks.operator.openshift.io cluster -o jsonpath='{.spec.disableNetworkDiagnostics}'
$ oc get networks.operator.openshift.io cluster -o jsonpath='{.spec.disableNetworkDiagnostics}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
true
true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
Kubelet
housekeeping 间隔是否调整为较慢的速度。这是在containerMountNS
机器配置中设置的。运行以下命令:oc describe machineconfig container-mount-namespace-and-kubelet-conf-master | grep OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION
$ oc describe machineconfig container-mount-namespace-and-kubelet-conf-master | grep OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Environment="OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION=60s"
Environment="OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION=60s"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 Grafana 和
alertManagerMain
是否已禁用,Prometheus 保留周期是否已设置为 24h:oc get configmap cluster-monitoring-config -n openshift-monitoring -o jsonpath="{ .data.config\.yaml }"
$ oc get configmap cluster-monitoring-config -n openshift-monitoring -o jsonpath="{ .data.config\.yaml }"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令验证集群中没有找到 Grafana 和
alertManagerMain
路由:oc get route -n openshift-monitoring alertmanager-main
$ oc get route -n openshift-monitoring alertmanager-main
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route -n openshift-monitoring grafana
$ oc get route -n openshift-monitoring grafana
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这两个查询都应返回
Error from server(NotFound)
消息。
运行以下命令,检查是否已为每个
PerformanceProfile
、Tuned
性能补丁、工作负载分区和内核命令行参数分配至少 4 个保留
CPU:oc get performanceprofile -o jsonpath="{ .items[0].spec.cpu.reserved }"
$ oc get performanceprofile -o jsonpath="{ .items[0].spec.cpu.reserved }"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
0-3
0-3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意根据您的工作负载要求,您可能需要分配额外的保留 CPU。