4.9. 通过设置内核引导参数来对托管集群进行高级节点调整
对于托管 control plane 中的高级性能优化(需要设置内核引导参数),您还可以使用 Node Tuning Operator。以下示例演示了如何创建保留巨页的节点池。
流程
创建一个
ConfigMap
对象,其中包含一个Tuned
对象清单,用于创建大小为 2 MB 的 10 个巨页。将此ConfigMap
清单保存到名为tuned-hugepages.yaml
的文件中:apiVersion: v1 kind: ConfigMap metadata: name: tuned-hugepages namespace: clusters data: tuning: | apiVersion: tuned.openshift.io/v1 kind: Tuned metadata: name: hugepages namespace: openshift-cluster-node-tuning-operator spec: profile: - data: | [main] summary=Boot time configuration for hugepages include=openshift-node [bootloader] cmdline_openshift_node_hugepages=hugepagesz=2M hugepages=50 name: openshift-node-hugepages recommend: - priority: 20 profile: openshift-node-hugepages
注意.spec.recommend.match
字段被有意留空。在本例中,这个Tuned
对象应用到引用此ConfigMap
对象的节点池中的所有节点。将具有相同硬件配置的节点分组到同一节点池中。否则,TuneD 操作对象可以为共享同一节点池的两个或多个节点计算冲突的内核参数。在管理集群中创建
ConfigMap
对象:$ oc --kubeconfig="$MGMT_KUBECONFIG" create -f tuned-hugepages.yaml
创建
NodePool
清单 YAML 文件,自定义NodePool
的升级类型,并引用您在spec.tuningConfig
部分中创建的ConfigMap
对象。创建NodePool
清单,并使用hcp
CLI 将其保存到名为hugepages-nodepool.yaml
的文件中:NODEPOOL_NAME=hugepages-example INSTANCE_TYPE=m5.2xlarge NODEPOOL_REPLICAS=2 hcp create nodepool aws \ --cluster-name $CLUSTER_NAME \ --name $NODEPOOL_NAME \ --node-count $NODEPOOL_REPLICAS \ --instance-type $INSTANCE_TYPE \ --render > hugepages-nodepool.yaml
在
hugepages-nodepool.yaml
文件中,将.spec.management.upgradeType
设置为InPlace
,并将.spec.tuningConfig
设置为引用您创建的tuned-hugepages
ConfigMap
对象。apiVersion: hypershift.openshift.io/v1alpha1 kind: NodePool metadata: name: hugepages-nodepool namespace: clusters ... spec: management: ... upgradeType: InPlace ... tuningConfig: - name: tuned-hugepages
注意要避免应用新的
MachineConfig
对象时不必要的重新创建节点,请将.spec.management.upgradeType
设置为InPlace
。如果使用Replace
升级类型,则节点会被完全删除,当应用 TuneD 操作对象计算的新内核引导参数时,新节点可以替换它们。在管理集群中创建
NodePool
:$ oc --kubeconfig="$MGMT_KUBECONFIG" create -f hugepages-nodepool.yaml
验证
节点可用后,容器化 TuneD 守护进程会根据应用的 TuneD 配置集计算所需的内核引导参数。在节点就绪并重新引导以应用生成的 MachineConfig
对象后,您可以验证是否已应用 TuneD 配置集,并且设置了内核引导参数。
列出托管的集群中的
Tuned
对象:$ oc --kubeconfig="$HC_KUBECONFIG" get tuned.tuned.openshift.io -n openshift-cluster-node-tuning-operator
输出示例
NAME AGE default 123m hugepages-8dfb1fed 1m23s rendered 123m
列出托管的集群中的
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 openshift-node True False 132m nodepool-1-worker-2 openshift-node True False 131m hugepages-nodepool-worker-1 openshift-node-hugepages True False 4m8s hugepages-nodepool-worker-2 openshift-node-hugepages True False 3m57s
新
NodePool
中的两个 worker 节点都应用了openshift-node-hugepages
配置集。要确认正确应用了调整,请在节点上启动一个 debug shell 并检查
/proc/cmdline
。$ oc --kubeconfig="$HC_KUBECONFIG" debug node/nodepool-1-worker-1 -- chroot /host cat /proc/cmdline
输出示例
BOOT_IMAGE=(hd0,gpt3)/ostree/rhcos-... hugepagesz=2M hugepages=50
其他资源
有关托管 control plane 的更多信息,请参阅托管 control plane。