4.9. 通过设置内核引导参数来对托管集群进行高级节点调整
托管的 control plane 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
对于托管 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清单,并使用hypershiftCLI 将它保存到名为hugepages-nodepool.yaml的文件中:NODEPOOL_NAME=hugepages-example INSTANCE_TYPE=m5.2xlarge NODEPOOL_REPLICAS=2 hypershift 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-hugepagesConfigMap对象。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 Tuneds -n openshift-cluster-node-tuning-operator
输出示例
NAME AGE default 123m hugepages-8dfb1fed 1m23s rendered 123m
列出托管的集群中的
Profile对象:$ oc --kubeconfig="$HC_KUBECONFIG" get Profiles -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 (技术预览)。