4.2. 在托管集群中配置节点性能优化
要在托管集群中的节点上设置节点级别性能优化,您可以使用 Node Tuning Operator。在托管的 control plane 中,您可以通过创建包含 Tuned
对象并在节点池中引用这些配置映射的配置映射来配置节点调整。
流程
创建包含有效 tuned 清单的配置映射,并引用节点池中的清单。在以下示例中,
Tuned
清单定义了一个配置文件,在包含tuned-1-node-label
节点标签的节点上将vm.dirty_ratio
设为 55。将以下ConfigMap
清单保存到名为tuned-1.yaml
的文件中:apiVersion: v1 kind: ConfigMap metadata: name: tuned-1 namespace: clusters data: tuning: | apiVersion: tuned.openshift.io/v1 kind: Tuned metadata: name: tuned-1 namespace: openshift-cluster-node-tuning-operator spec: profile: - data: | [main] summary=Custom OpenShift profile include=openshift-node [sysctl] vm.dirty_ratio="55" name: tuned-1-profile recommend: - priority: 20 profile: tuned-1-profile
注意如果您没有将任何标签添加到 Tuned spec 的
spec.recommend
部分中的条目中,则假定基于 node-pool 的匹配,因此spec.recommend
部分中的最高优先级配置集应用于池中的节点。虽然您可以通过在 Tuned.spec.recommend.match
部分中设置标签值来实现更精细的节点标记匹配,除非您将节点池的.spec.management.upgradeType
值设置为InPlace
。在管理集群中创建
ConfigMap
对象:$ oc --kubeconfig="$MGMT_KUBECONFIG" create -f tuned-1.yaml
通过编辑节点池或创建节点池的
spec.tuningConfig
字段中引用ConfigMap
对象。在本例中,假设您只有一个NodePool
,名为nodepool-1
,它含有 2 个节点。apiVersion: hypershift.openshift.io/v1alpha1 kind: NodePool metadata: ... name: nodepool-1 namespace: clusters ... spec: ... tuningConfig: - name: tuned-1 status: ...
注意您可以在多个节点池中引用同一配置映射。在托管的 control plane 中,Node Tuning Operator 会将节点池名称和命名空间的哈希值附加到 Tuned CR 的名称中,以区分它们。在这种情况下,请不要为同一托管集群在不同的 Tuned CR 中创建多个名称相同的 TuneD 配置集。
验证
现在,您已创建包含 Tuned
清单的 ConfigMap
对象并在 NodePool
中引用它,Node Tuning Operator 会将 Tuned
对象同步到托管集群中。您可以验证定义了 Tuned
对象,以及将 TuneD 配置集应用到每个节点。
列出托管的集群中的
Tuned
对象:$ oc --kubeconfig="$HC_KUBECONFIG" get tuned.tuned.openshift.io -n openshift-cluster-node-tuning-operator
输出示例
NAME AGE default 7m36s rendered 7m36s tuned-1 65s
列出托管的集群中的
Profile
对象:$ oc --kubeconfig="$HC_KUBECONFIG" get profile.tuned.openshift.io -n openshift-cluster-node-tuning-operator
输出示例
NAME TUNED APPLIED DEGRADED AGE nodepool-1-worker-1 tuned-1-profile True False 7m43s nodepool-1-worker-2 tuned-1-profile True False 7m14s
注意如果没有创建自定义配置集,则默认应用
openshift-node
配置集。要确认正确应用了调整,请在节点上启动一个 debug shell,并检查 sysctl 值:
$ oc --kubeconfig="$HC_KUBECONFIG" debug node/nodepool-1-worker-1 -- chroot /host sysctl vm.dirty_ratio
输出示例
vm.dirty_ratio = 55