第 18 章 使用性能配置集调整托管的 control plane 以实现低延迟
通过应用性能配置集来调整托管 control plane 以实现低延迟。使用性能配置集,您可以限制基础架构和应用程序容器的 CPU,并为对延迟敏感的进程配置巨页、Hyper-Threading 和 CPU 分区。
18.1. 为托管 control plane 创建性能配置集 复制链接链接已复制到粘贴板!
您可以使用 Performance Profile Creator (PPC) 工具创建集群性能配置集。PPC 是 Node Tuning Operator 的功能。
PPC 将有关集群的信息与用户提供的配置相结合,以生成适合您的硬件、拓扑和用例的性能配置集。
以下是在集群中创建和应用性能配置集的高级工作流:
-
使用
must-gather
命令收集有关集群的信息。 - 使用 PPC 工具创建性能配置集。
- 将性能配置集应用到集群。
18.1.1. 为 PPC 收集托管 control plane 集群的数据 复制链接链接已复制到粘贴板!
Performance Profile Creator(PPC)工具需要 must-gather
数据。作为集群管理员,运行 must-gather
命令来捕获集群的信息。
先决条件
-
有对管理集群的
cluster-admin
角色访问权限。 -
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令导出管理集群
kubeconfig
文件:export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
$ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,列出所有命名空间中的所有节点池:
oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
$ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
输出显示了定义
NodePool
资源的管理集群中的命名空间集群
。 -
NodePool
资源的名称,如democluster-us-east-1a
。 -
此
NodePool
所属的HostedCluster
。例如,democluster
。
-
输出显示了定义
在受管集群中,运行以下命令来列出可用的 secret:
oc get secrets -n clusters
$ oc get secrets -n clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,提取托管集群的
kubeconfig
文件:oc get secret <secret_name> -n <cluster_namespace> -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret <secret_name> -n <cluster_namespace> -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为托管集群创建
must-gather
捆绑包,请打开终端窗口并运行以下命令:导出托管的集群
kubeconfig
文件:export HC_KUBECONFIG=<path_to_hosted_cluster_kubeconfig>
$ export HC_KUBECONFIG=<path_to_hosted_cluster_kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
export HC_KUBECONFIG=~/hostedcpkube/hosted-cluster-kubeconfig
$ export HC_KUBECONFIG=~/hostedcpkube/hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
进入存储
must-gather
数据的目录。 为托管集群收集故障排除数据:
oc --kubeconfig="$HC_KUBECONFIG" adm must-gather
$ oc --kubeconfig="$HC_KUBECONFIG" adm must-gather
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从工作目录中刚刚创建的
must-gather
目录创建一个压缩文件。例如,在使用 Linux 操作系统的计算机上运行以下命令:tar -czvf must-gather.tar.gz must-gather.local.1203869488012141147
$ tar -czvf must-gather.tar.gz must-gather.local.1203869488012141147
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.1.2. 使用 Podman 在托管集群中运行 Performance Profile Creator 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用带有 Performance Profile Creator (PPC) 工具的 Podman 来创建性能配置集。
有关 PPC 参数的更多信息,请参阅"Performance Profile Creator 参数"。
PPC 工具被设计为托管的集群感知。当它检测到来自 must-gather
数据的托管集群时,它会自动执行以下操作:
- 识别没有机器配置池(MCP)。
- 使用节点池作为计算节点配置的真实来源,而不是 MCP。
-
除非要以特定池为目标,否则不需要明确指定
node-pool-name
值。
PPC 使用托管集群中的 must-gather
数据来创建性能配置集。如果您对集群进行任何更改,如重新标记针对性能配置的节点,则必须在再次运行 PPC 前重新创建 must-gather
数据。
先决条件
-
使用具有
cluster-admin
角色的用户访问集群。 - 已安装托管集群。
-
安装 Podman 和 OpenShift CLI (
oc
)。 - 访问 Node Tuning Operator 镜像。
-
访问集群的
must-gather
数据。
流程
在托管的集群中,运行以下命令使用 Podman 向
registry.redhat.io
进行身份验证:podman login registry.redhat.io
$ podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Username: <user_name> Password: <password>
Username: <user_name> Password: <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在托管集群上创建性能配置集。这个示例使用示例 PPC 参数和值:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看创建的 YAML 文件:
cat my-hosted-cp-performance-profile
$ cat my-hosted-cp-performance-profile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.1.3. 在托管集群中配置低延迟性能优化 复制链接链接已复制到粘贴板!
要使用托管集群中的节点中的性能配置集设置低延迟,您可以使用 Node Tuning Operator。在托管的 control plane 中,您可以通过创建包含 Tuned
对象并在节点池中引用这些配置映射的配置映射来配置低延迟性能优化。在这种情况下,tuned 对象是一个 PerformanceProfile
对象,它定义了您要应用到节点池中的节点的性能配置集。
流程
运行以下命令导出管理集群
kubeconfig
文件:export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
$ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在管理集群中创建
ConfigMap
对象:oc --kubeconfig="$MGMT_KUBECONFIG" apply -f my-hosted-cp-performance-profile.yaml
$ oc --kubeconfig="$MGMT_KUBECONFIG" apply -f my-hosted-cp-performance-profile.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,编辑
clusters
命名空间中的NodePool
对象,添加spec.tuningConfig
字段和在该字段中创建性能配置集的名称:oc edit np -n clusters
$ oc edit np -n clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以在多个节点池中引用同一配置集。在托管的 control plane 中,Node Tuning Operator 会将节点池名称和命名空间的哈希值附加到
Tuned
自定义资源的名称中,以区分它们。进行更改后,系统会检测到需要配置更改,并启动该池中节点的滚动更新以应用新配置。
验证
运行以下命令,列出所有命名空间中的所有节点池:
oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
$ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意UPDATINGCONFIG
字段指示节点池是否在更新其配置过程中。在更新过程中,节点池状态中的UPDATINGCONFIG
字段将变为True
。只有在UPDATINGCONFIG
字段返回到False
时,新配置才会被视为完全应用。运行以下命令,列出
clusters-democluster
命名空间中的所有配置映射:oc --kubeconfig="$MGMT_KUBECONFIG" get cm -n clusters-democluster
$ oc --kubeconfig="$MGMT_KUBECONFIG" get cm -n clusters-democluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示 kubeletconfig
kubeletconfig-performance-democluster-us-east-1a
和性能配置集performance-democluster-us-east-1a
。Node Tuning Operator 将Tuned
对象同步到托管的集群中。您可以验证定义了哪些Tuned
对象,以及将哪些配置集应用到每个节点。运行以下命令,列出管理集群中的可用 secret:
oc get secrets -n clusters
$ oc get secrets -n clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,提取托管集群的
kubeconfig
文件:oc get secret <secret_name> -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret <secret_name> -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令导出托管集群 kubeconfig :
export HC_KUBECONFIG=<path_to_hosted-cluster-kubeconfig>
$ export HC_KUBECONFIG=<path_to_hosted-cluster-kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 kubeletconfig 是否在托管集群中镜像:
oc --kubeconfig="$HC_KUBECONFIG" get cm -n openshift-config-managed | grep kubelet
$ oc --kubeconfig="$HC_KUBECONFIG" get cm -n openshift-config-managed | grep kubelet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
kubelet-serving-ca 1 79m kubeletconfig-performance-democluster-us-east-1a 1 15m
kubelet-serving-ca 1 79m kubeletconfig-performance-democluster-us-east-1a 1 15m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证在托管集群中是否设置了
single-numa-node
策略:oc --kubeconfig="$HC_KUBECONFIG" get cm kubeletconfig-performance-democluster-us-east-1a -o yaml -n openshift-config-managed | grep single
$ oc --kubeconfig="$HC_KUBECONFIG" get cm kubeletconfig-performance-democluster-us-east-1a -o yaml -n openshift-config-managed | grep single
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
topologyManagerPolicy: single-numa-node
topologyManagerPolicy: single-numa-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow