安装带有 HCP 的 ROSA
在 AWS (ROSA) 集群上安装、访问和删除 Red Hat OpenShift Service。
摘要
第 1 章 使用默认选项创建带有 HCP 集群的 ROSA
如果您要查找 ROSA 经典的快速入门指南,请参阅 Red Hat OpenShift Service on AWS Quickstart 指南。
带有托管 control plane (HCP) 的 Red Hat OpenShift Service on AWS (ROSA) 提供了更高效且可靠的架构,以便在 AWS (ROSA) 集群上创建 Red Hat OpenShift Service。使用带有 HCP 的 ROSA 时,每个集群都有一个专用的 control plane,它在 ROSA 服务帐户中被隔离。
带有托管 control plane (HCP) 的 Red Hat OpenShift Service on AWS (ROSA) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
使用默认选项和自动 AWS Identity and Access Management (IAM) 资源快速创建带有 HCP 集群的 ROSA。您可以使用 ROSA CLI (rosa)部署集群。
由于无法将现有的 ROSA 集群升级或转换为托管的 control plane 架构,您必须创建一个新集群以使用带有 HCP 功能的 ROSA。
带有 HCP 集群的 ROSA 仅支持 AWS 安全令牌服务(STS)身份验证。
1.1. 将 ROSA 与托管的 control plane 和 ROSA 经典进行比较
带有托管 control plane (HCP)的 Red Hat OpenShift Service on AWS (ROSA)提供了在 AWS (ROSA)集群上创建受管 Red Hat OpenShift Service 的不同方法。带有 HCP 的 ROSA 提供降低成本解决方案,专注于可靠性效率。专注于效率,您可以快速创建新集群并在几分钟内部署应用程序。
具有 HCP 的 ROSA 只需要至少两个节点使其适合较小的项目,同时仍然能够扩展来支持大型项目和企业。
表 1.1. ROSA 架构比较表
| | 托管 Control Plane | Classic |
|---|---|---|
| 集群基础架构托管 | 使用 HCP 的 ROSA 部署 control plane 组件,如 etcd、API 服务器和 oauth,这些组件单独托管在红帽拥有和管理帐户的 AWS 上。 | ROSA Classic 通过与在客户相同的 AWS 帐户托管的基础架构和 worker 节点一起部署 control plane 组件。 |
| 置备时间 | 大约 10 分钟 | 大约 40 分钟 |
| 架构 |
|
|
| 最小 Amazon EC2 占用 | 一个集群至少需要两个节点 | 一个集群至少需要 7 个节点 |
| Deployment |
|
|
| 升级 | 选择性地单独升级 control plane 和机器池 | 整个集群一次升级 |
| 区域可用性 |
| 有关 AWS 区域可用性,请参阅 AWS 文档中的 Red Hat OpenShift Service on AWS 端点和配额。 |
| Compliance |
|
|
1.1.1. ROSA 架构网络比较
ROSA Classic 和 ROSA with HCP 提供在公共和私有网络上安装集群的选项。下图显示了这些选项之间的区别。
图 1.1. 在公共和私有网络上部署的 ROSA Classic
图 1.2. 在公共网络上部署带有 HCP 的 ROSA

图 1.3. 在私有网络上部署带有 HCP 的 ROSA

其他资源
有关支持的证书的完整列表,请参阅 Red Hat OpenShift Service on AWS 上的"标记过程和安全性"的 Compliance 部分。
关于自动创建模式的注意事项
本文档中的步骤使用 ROSA CLI 中的 auto 模式,使用当前的 AWS 帐户立即创建所需的 IAM 资源。所需资源包括帐户范围内的 IAM 角色和策略、特定于集群的 Operator 角色和策略,以及 OpenID Connect (OIDC)身份提供程序。
另外,您可以使用 手动模式,它输出创建 IAM 资源所需的 aws 命令,而不是自动部署它们。有关 使用手动模式 或自定义自定义部署使用 HCP 集群的 ROSA 的步骤,请参阅使用自定义创建集群。
后续步骤
- 确保您已完成 AWS 的先决条件。
1.2. 默认集群规格概述
您可以使用默认安装选项快速创建带有 AWS 安全令牌服务(STS)的 HCP 集群的 ROSA。以下概述描述了默认集群规格。
表 1.2. 带有 HCP 集群规格的默认 ROSA
| 组件 | 默认规格 |
|---|---|
| 帐户和角色 |
|
| 集群设置 |
|
| Encryption |
|
| Compute 节点机器池 |
|
| 网络配置 |
|
| 无类别域间路由 (CIDR) 范围 |
|
| 集群角色和策略 |
|
| 集群更新策略 |
|
1.3. 带有 HCP 先决条件的 ROSA
要使用 HCP 集群创建 ROSA,您必须有以下项目:
- 配置的虚拟私有云(VPC)
- 帐户范围内的角色
- OIDC 配置
- Operator 角色
1.3.1. 使用 HCP 集群为您的 ROSA 创建虚拟私有云
您必须有一个 Virtual Private Cloud (VPC)才能使用 HCP 集群创建 ROSA。您可以使用以下方法创建 VPC:
- 使用 Terraform 模板创建 VPC
- 在 AWS 控制台中手动创建 VPC 资源
Terraform 指令用于测试和演示目的。您自己的安装需要对 VPC 进行一些修改,以便您自己的使用。您还应确保在使用这个 Terraform 脚本时,它位于您要安装集群的同一区域。在这些示例中,使用 us-east-2。
使用 Terraform 创建虚拟私有云
Terraform 是一个工具,允许您使用已建立的模板创建各种资源。以下过程使用默认选项来创建带有 HCP 集群的 ROSA。有关使用 Terraform 的更多信息,请参阅其他资源。
先决条件
- 您已在机器上安装 Terraform 版本 1.4.0 或更新版本。
- 您已在机器上安装了 Git。
流程
运行以下命令,打开 shell 提示符并克隆 Terraform VPC 存储库:
$ git clone https://github.com/openshift-cs/terraform-vpc-example
运行以下命令进入创建的目录:
$ cd terraform-vpc-example
运行以下命令来启动 Terraform 文件:
$ terraform init
此进程完成后会出现确认初始化的消息。
要基于现有的 Terraform 模板构建 VPC Terraform 计划,请运行
plan命令。您必须包含 AWS 区域。您可以选择指定集群名称。在terraform plan完成后,一个rosa.tfplan文件会被添加到hypershift-tf目录。有关更详细的选项,请参阅 Terraform VPC 存储库的 README 文件。$ terraform plan -out rosa.tfplan -var region=<region> [-var cluster_name=<cluster_name>]
运行以下命令应用此计划文件来构建 VPC:
$ terraform apply rosa.tfplan
可选: 您可以运行以下命令来捕获 Terraform-provisioned private、public 和 machinepool 子网 ID 的值作为环境变量,以便在使用 HCP 集群创建 ROSA 时使用:
$ export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)
验证
您可以使用以下命令验证变量是否已正确设置:
$ echo $SUBNET_IDS
输出示例
$ subnet-0a6a57e0f784171aa,subnet-078e84e5b10ecf5b0
其他资源
- 有关自定义 VPC 时可用选项的详细列表,请参阅 Terraform VPC 存储库。
手动创建虚拟私有云
如果您选择手动创建 Virtual Private Cloud (VPC)而不是使用 Terraform,请访问 AWS 控制台中的 VPC 页面。您的 VPC 必须满足下表中显示的要求。
表 1.3. VPC 的要求
| 要求 | 详情 |
|---|---|
| VPC 名称 | 创建集群时需要具有特定的 VPC 名称和 ID。 |
| CIDR 范围 | 您的 VPC CIDR 范围应该与您的机器 CIDR 匹配。 |
| 可用区 | 单个区需要一个可用区,对于多区的可用区需要三个可用区。 |
| 公共子网 | 您必须有一个带有 NAT 网关的公共子网。 |
| DNS 主机名和解析 | 您必须确保启用 DNS 主机名和解析。 |
1.3.2. 创建集群范围的 STS 角色和策略
在使用 Red Hat OpenShift Service on AWS (ROSA) CLI ( rosa )创建带有托管 control plane (HCP)集群的 Red Hat OpenShift Service on AWS (ROSA)前,请创建所需的帐户范围角色和策略,包括 Operator 策略。
先决条件
- 您已使用 HCP 为 ROSA 完成 AWS 的先决条件。
- 您有可用的 AWS 服务配额。
- 您已在 AWS 控制台中启用了 ROSA 服务。
您已在安装主机上安装并配置了最新的 ROSA CLI (
rosa)。注意要使用 HCP 集群成功安装 ROSA,请使用 ROSA CLI 的最新版本(
rosa)。- 已使用 ROSA CLI 登录您的红帽帐户。
流程
如果您的 AWS 帐户中不存在它们,请运行以下命令来创建所需的帐户范围内的 STS 角色和策略:
$ rosa create account-roles --force-policy-creation
--force-policy-creation参数更新存在的现有角色和策略。如果没有角色和策略,该命令会创建这些资源。
1.3.3. 创建 OpenID Connect 配置
当将 ROSA 与 HCP 集群搭配使用时,您必须先创建 OpenID Connect (OIDC)配置。此配置已注册到 OpenShift Cluster Manager。
先决条件
- 您已使用 HCP 为 ROSA 完成 AWS 的先决条件。
- 您已完成了 Red Hat OpenShift Service on AWS 的 AWS 的先决条件。
-
您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa。
流程
要创建 OIDC 配置和 AWS 资源,请运行以下命令:
$ rosa create oidc-config --mode=auto --yes
此命令返回以下信息:
输出示例
? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes I: Setting up managed OIDC configuration I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice: rosa create operator-roles --prefix <user-defined> --oidc-config-id 13cdr6b If you are going to create a Hosted Control Plane cluster please include '--hosted-cp' I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName' ? Create the OIDC provider? Yes I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'
在创建集群时,您必须提供 OIDC 配置 ID。CLI 输出为
--mode auto提供这个值,否则您必须根据--mode manual的awsCLI 输出来确定这些值。可选: 您可以将 OIDC 配置 ID 保存为变量,以便稍后使用。运行以下命令来保存变量:
$ export OIDC_ID=30f5dqmk
使用以下命令查看变量的值:
$ echo $OIDC_ID
输出示例
$ 30f5dqmk
验证
您可以列出与用户机构关联的集群可用的 OIDC 配置。运行以下命令:
$ rosa list oidc-config
输出示例
ID MANAGED ISSUER URL SECRET ARN 2330dbs0n8m3chkkr25gkkcd8pnj3lk2 true https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2 233hvnrjoqu14jltk6lhbhf2tj11f8un false https://oidc-r7u1.s3.us-east-1.amazonaws.com aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN
1.3.4. 创建 Operator 角色和策略
当将 ROSA 与 HCP 集群搭配使用时,您必须创建带有托管 control plane (HCP)部署的 Red Hat OpenShift Service on AWS (ROSA)所需的 Operator IAM 角色。集群 Operator 使用 Operator 角色获取执行集群操作所需的临时权限,如管理后端存储、云供应商凭证和对集群的外部访问权限。
先决条件
- 您已使用 HCP 为 ROSA 完成 AWS 的先决条件。
-
您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa。 - 您创建了集群范围的 AWS 角色。
流程
要创建 Operator 角色,请运行以下命令:
$ rosa create operator-roles --hosted-cp --prefix <prefix-name> --oidc-config-id <oidc-config-id>
以下分类提供了 Operator 角色创建的选项。
$ rosa create operator-roles --hosted-cp --prefix <prefix-name> 1 --oidc-config-id <oidc-config-id> 2
您必须包含
--hosted-cp参数,以使用 HCP 集群为 ROSA 创建正确的角色。此命令返回以下信息:输出示例
? Role creation mode: auto ? Operator roles prefix: <pre-filled_prefix> 1 ? OIDC Configuration ID: 23soa2bgvpek9kmes9s7os0a39i13qm4 | https://dvbwgdztaeq9o.cloudfront.net/23soa2bgvpek9kmes9s7os0a39i13qm4 2 ? Create hosted control plane operator roles: Yes W: More than one Installer role found ? Installer role ARN: arn:aws:iam::4540112244:role/<prefix>-Installer-Role ? Permissions boundary ARN (optional): I: Reusable OIDC Configuration detected. Validating trusted relationships to operator roles: I: Creating roles using 'arn:aws:iam::4540112244:user/<userName>' I: Created role '<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' I: Created role '<prefix>-openshift-cloud-network-config-controller-cloud-credenti' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti' I: Created role '<prefix>-kube-system-kube-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager' I: Created role '<prefix>-kube-system-capa-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager' I: Created role '<prefix>-kube-system-control-plane-operator' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator' I: Created role '<prefix>-kube-system-kms-provider' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider' I: Created role '<prefix>-openshift-image-registry-installer-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials' I: Created role '<prefix>-openshift-ingress-operator-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials' I: To create a cluster with these roles, run the following command: rosa create cluster --sts --oidc-config-id 23soa2bgvpek9kmes9s7os0a39i13qm4 --operator-roles-prefix <prefix> --hosted-cp
Operator 角色现已创建,并可用于使用 HCP 集群创建 ROSA。
验证
您可以列出与 ROSA 帐户关联的 Operator 角色。运行以下命令:
$ rosa list operator-roles
输出示例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE <prefix> 8 ? Would you like to detail a specific prefix Yes 1 ? Operator Role Prefix: <prefix> ROLE NAME ROLE ARN VERSION MANAGED <prefix>-kube-system-capa-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager 4.13 No <prefix>-kube-system-control-plane-operator arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator 4.13 No <prefix>-kube-system-kms-provider arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider 4.13 No <prefix>-kube-system-kube-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager 4.13 No <prefix>-openshift-cloud-network-config-controller-cloud-credenti arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti 4.13 No <prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials 4.13 No <prefix>-openshift-image-registry-installer-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials 4.13 No <prefix>-openshift-ingress-operator-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials 4.13 No- 1
- 命令运行后,它会显示与 AWS 帐户关联的所有前缀,并记下与这个前缀关联的角色数量。如果您需要查看所有这些角色及其详情,请在详细信息提示符处输入"是",使这些角色按特定情况列出。
其他资源
1.4. 使用 CLI 创建带有 HCP 集群的 ROSA
当使用 Red Hat OpenShift Service on AWS (ROSA) CLI ( rosa )创建集群时,您可以选择默认选项来快速创建集群。
先决条件
- 您已使用 HCP 为 ROSA 完成 AWS 的先决条件。
- 您有可用的 AWS 服务配额。
- 您已在 AWS 控制台中启用了 ROSA 服务。
您已在安装主机上安装并配置了最新的 ROSA CLI (
rosa)。注意要成功安装 ROSA 集群,请使用 ROSA CLI 的最新版本(
rosa)。运行rosa version以查看您当前安装的 ROSA CLI 版本。如果有更新的版本,CLI 会提供下载此升级的链接。- 已使用 ROSA CLI 登录您的红帽帐户。
- 您已创建了 OIDC 配置。
- 已确认 AWS 帐户中存在 AWS Elastic Load Balancing (ELB)服务角色。
流程
您可以使用以下命令之一使用 HCP 集群创建 ROSA。
运行以下命令,使用单个初始机器池、公开可用的 API 和公开可用的 Ingress 创建集群:
$ rosa create cluster --cluster-name=<cluster_name> \ --sts --mode=auto --hosted-cp --operator-roles-prefix <operator-role-prefix> \ --oidc-config-id <ID-of-OIDC-configuration> --subnet-ids=<public-subnet-id>,<private-subnet-id>运行以下命令,使用单一、初始机器池、私有可用的 API 和私有可用的 Ingress 创建集群:
$ rosa create cluster --private --cluster-name=<cluster_name> \ --sts --mode=auto --hosted-cp --subnet-ids=<private-subnet-id>如果您使用了
OIDC_ID和SUBNET_IDS等变量,您可以在创建集群时使用这些引用。例如,运行以下命令:$ rosa create cluster --hosted-cp --subnet-ids=$SUBNET_IDS --oidc-config-id=$OIDC_ID --cluster-name=<cluster_name>
运行以下命令检查集群的状态:
$ rosa describe cluster --cluster=<cluster_name>
在集群安装过程中,输出中会列出以下
State字段更改:-
待定(准备帐户) -
安装(正在进行中的DNS 设置) -
安装 ready注意如果安装失败,或者
State字段在超过 10 分钟后没有变为ready,请检查安装故障排除文档以了解详细信息。如需更多信息,请参阅故障排除安装。如需联系红帽支持以获取帮助的步骤,请参阅 Red Hat OpenShift Service on AWS 支持。
-
通过观察 Red Hat OpenShift Service on AWS 安装程序日志来跟踪集群创建的进度。要检查日志,请运行以下命令:
$ rosa logs install --cluster=<cluster_name> --watch 1- 1
- 可选: 要在安装过程中监视是否有新的日志消息,请使用
--watch参数。
1.5. 后续步骤
1.6. 其他资源
- 有关使用手动模式部署 ROSA 集群的步骤,请参阅使用自定义创建集群。
- 有关使用 STS 在 AWS 上部署 Red Hat OpenShift Service 所需的 AWS Identity Access Management (IAM)资源的更多信息,请参阅 关于使用 STS 的集群的 IAM 资源。
- 有关可选设置 Operator 角色名称前缀的详情,请参阅关于自定义 Operator IAM 角色前缀。
- 有关使用 STS 安装 ROSA 的先决条件的详情,请参考使用 STS 的 ROSA 的 AWS 先决条件。
-
有关使用
自动和手动模式创建所需的 STS 资源的详情,请参阅了解自动和手动部署模式。 - 有关在 AWS IAM 中使用 OpenID Connect (OIDC)身份提供程序的更多信息,请参阅 AWS 文档中的 创建 OpenID Connect (OIDC)身份供应商。
- 有关 ROSA 集群安装故障排除的更多信息,请参阅故障排除安装。
- 如需联系红帽支持以获取帮助的步骤,请参阅 Red Hat OpenShift Service on AWS 支持。
第 2 章 在带有 HCP 集群的 ROSA 上使用 Node Tuning Operator
带有托管 control plane (HCP)的 Red Hat OpenShift Service on AWS (ROSA)支持 Node Tuning Operator,以提高使用 HCP 集群中的 ROSA 上的节点性能。在创建节点调优配置前,必须创建自定义性能优化规格。
带有托管 control plane (HCP) 的 Red Hat OpenShift Service on AWS (ROSA) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
用途
Node Tuning Operator 可以帮助您通过编排 TuneD 守护进程来管理节点级别的性能优化,并使用 Performance Profile 控制器获得低延迟性能。大多数高性能应用程序都需要一定程度的内核级性能优化。Node Tuning Operator 为用户提供了一个统一的、节点一级的 sysctl 管理接口,并可以根据具体用户的需要灵活地添加自定义性能优化设置。
Operator 将 Red Hat OpenShift Service 的容器化 TuneD 守护进程作为 Kubernetes 守护进程集进行管理。它保证了自定义性能优化设置以可被守护进程支持的格式传递到在集群中运行的所有容器化的 TuneD 守护进程中。相应的守护进程会在集群的所有节点上运行,每个节点上运行一个。
在发生触发配置集更改的事件时,或通过接收和处理终止信号安全终止容器化 TuneD 守护进程时,容器化 TuneD 守护进程所应用的节点级设置将被回滚。
Node Tuning Operator 使用 Performance Profile 控制器来实现自动性能优化,以实现 Red Hat OpenShift Service on AWS 应用程序的低延迟性能。集群管理员配置了性能配置集以定义节点级别的设置,例如:
- 将内核更新至 kernel-rt。
- 为内务选择 CPU。
- 为运行工作负载选择 CPU。
目前,cgroup v2 不支持禁用 CPU 负载均衡。因此,如果您启用了 cgroup v2,则可能无法从性能配置集中获取所需的行为。如果您使用 executeace 配置集,则不建议启用 cgroup v2。
Node Tuning Operator 是版本 4.1 及更高版本中的标准 Red Hat OpenShift Service on AWS 安装的一部分。
在早期版本的 Red Hat OpenShift Service on AWS 中,Performance Addon Operator 用来实现自动性能优化,以便为 OpenShift 应用程序实现低延迟性能。在 Red Hat OpenShift Service on AWS 4.11 及更新的版本中,这个功能是 Node Tuning Operator 的一部分。
2.1. 自定义调整规格
Operator 的自定义资源 (CR) 包含两个主要部分。第一部分是 profile:,这是 TuneD 配置集及其名称的列表。第二部分是 recommend:,用来定义配置集选择逻辑。
多个自定义调优规格可以共存,作为 Operator 命名空间中的多个 CR。Operator 会检测到是否存在新 CR 或删除了旧 CR。所有现有的自定义性能优化设置都会合并,同时更新容器化 TuneD 守护进程的适当对象。
管理状态
通过调整默认的 Tuned CR 来设置 Operator Management 状态。默认情况下,Operator 处于 Managed 状态,默认的 Tuned CR 中没有 spec.managementState 字段。Operator Management 状态的有效值如下:
- Managed: Operator 会在配置资源更新时更新其操作对象
- Unmanaged: Operator 将忽略配置资源的更改
- Removed: Operator 将移除 Operator 置备的操作对象和资源
配置集数据
profile: 部分列出了 TuneD 配置集及其名称。
{
"profile": [
{
"name": "tuned_profile_1",
"data": "# TuneD profile specification\n[main]\nsummary=Description of tuned_profile_1 profile\n\n[sysctl]\nnet.ipv4.ip_forward=1\n# ... other sysctl's or other TuneD daemon plugins supported by the containerized TuneD\n"
},
{
"name": "tuned_profile_n",
"data": "# TuneD profile specification\n[main]\nsummary=Description of tuned_profile_n profile\n\n# tuned_profile_n profile settings\n"
}
]
}建议的配置集
profile: 选择逻辑通过 CR 的 recommend: 部分来定义。recommend: 部分是根据选择标准推荐配置集的项目列表。
"recommend": [
{
"recommend-item-1": details_of_recommendation,
# ...
"recommend-item-n": details_of_recommendation,
}
]列表中的独立项:
{
"profile": [
{
# ...
}
],
"recommend": [
{
"profile": <tuned_profile_name>, 1
"priority": <priority>, 2
"machineConfigLabels": { <Key_Pair_for_MachineConfig> 3
},
"match": [ 4
{
"label": <label_information> 5
},
]
},
]
}
<match> 是一个递归定义的可选数组,如下所示:
"match": [
{
"label": 1
},
]- 1
- 节点或 pod 标签名称。
如果不省略 <match>,则所有嵌套的 <match> 部分也必须评估为 true。否则会假定 false,并且不会应用或建议具有对应 <match> 部分的配置集。因此,嵌套(子级 <match> 部分)会以逻辑 AND 运算来运作。反之,如果匹配 <match> 列表中任何一项,整个 <match> 列表评估为 true。因此,该列表以逻辑 OR 运算来运作。
如果定义 了 machineConfigLabels,基于机器配置池的匹配会对给定的 recommend: 列表项打开。<mcLabels> 指定机器配置标签。机器配置会自动创建,以在配置集 <tuned_profile_name> 中应用主机设置,如内核引导参数。这包括使用与 <mcLabels> 匹配的机器配置选择器查找所有机器配置池,并在分配了找到的机器配置池的所有节点上设置配置集 <tuned_profile_name>。要针对同时具有 master 和 worker 角色的节点,您必须使用 master 角色。
列表项 match 和 machineConfigLabels 由逻辑 OR 操作符连接。match 项首先以短电路方式评估。因此,如果它被评估为 true,则不考虑 MachineConfigLabels 项。
当使用基于机器配置池的匹配时,建议将具有相同硬件配置的节点分组到同一机器配置池中。不遵循这个原则可能会导致在共享同一机器配置池的两个或者多个节点中 TuneD 操作对象导致内核参数冲突。
示例:基于节点或 pod 标签的匹配
[
{
"match": [
{
"label": "tuned.openshift.io/elasticsearch",
"match": [
{
"label": "node-role.kubernetes.io/master"
},
{
"label": "node-role.kubernetes.io/infra"
}
],
"type": "pod"
}
],
"priority": 10,
"profile": "openshift-control-plane-es"
},
{
"match": [
{
"label": "node-role.kubernetes.io/master"
},
{
"label": "node-role.kubernetes.io/infra"
}
],
"priority": 20,
"profile": "openshift-control-plane"
},
{
"priority": 30,
"profile": "openshift-node"
}
]
根据配置集优先级,以上 CR 针对容器化 TuneD 守护进程转换为 recommend.conf 文件。优先级最高 (10) 的配置集是 openshift-control-plane-es,因此会首先考虑它。在给定节点上运行的容器化 TuneD 守护进程会查看同一节点上是否在运行设有 tuned.openshift.io/elasticsearch 标签的 pod。如果没有,则整个 <match> 部分评估为 false。如果存在具有该标签的 pod,为了让 <match> 部分评估为 true,节点标签也需要是 node-role.kubernetes.io/master 或 node-role.kubernetes.io/infra。
如果这些标签对优先级为 10 的配置集而言匹配,则应用 openshift-control-plane-es 配置集,并且不考虑其他配置集。如果节点/pod 标签组合不匹配,则考虑优先级第二高的配置集 (openshift-control-plane)。如果容器化 TuneD Pod 在具有标签 node-role.kubernetes.io/master 或 node-role.kubernetes.io/infra 的节点上运行,则应用此配置集。
最后,配置集 openshift-node 的优先级最低 (30)。它没有 <match> 部分,因此始终匹配。如果给定节点上不匹配任何优先级更高的配置集,它会作为一个适用于所有节点的配置集来设置 openshift-node 配置集。

示例:基于机器配置池的匹配
{
"apiVersion": "tuned.openshift.io/v1",
"kind": "Tuned",
"metadata": {
"name": "openshift-node-custom",
"namespace": "openshift-cluster-node-tuning-operator"
},
"spec": {
"profile": [
{
"data": "[main]\nsummary=Custom OpenShift node profile with an additional kernel parameter\ninclude=openshift-node\n[bootloader]\ncmdline_openshift_node_custom=+skew_tick=1\n",
"name": "openshift-node-custom"
}
],
"recommend": [
{
"machineConfigLabels": {
"machineconfiguration.openshift.io/role": "worker-custom"
},
"priority": 20,
"profile": "openshift-node-custom"
}
]
}
}
为尽量减少节点的重新引导情况,为目标节点添加机器配置池将匹配的节点选择器标签,然后创建上述 Tuned CR,最后创建自定义机器配置池。
特定于云供应商的 TuneD 配置集
通过此功能,所有针对 Red Hat OpenShift Service on AWS 集群上的特定云供应商都可以方便地分配一个 TuneD 配置集。这可实现,而无需添加额外的节点标签或将节点分组到机器配置池中。
这个功能会利用 spec.providerID 节点对象值(格式为 <cloud-provider>://<cloud-provider-specific-id>),并在 NTO operand 容器中写带有 <cloud-provider> 值的文件 /var/lib/tuned/provider。然后,TuneD 会使用这个文件的内容来加载 provider-<cloud-provider> 配置集(如果这个配置集存在)。
openshift 配置集(openshift-control-plane 和 openshift-node 配置集都从其中继承设置)现在被更新来使用这个功能(通过使用条件配置集加载)。NTO 或 TuneD 目前不包含任何特定于云供应商的配置集。但是,您可以创建一个自定义配置集 provider-<cloud-provider>,它将适用于所有针对于所有云供应商的集群节点。
GCE 云供应商配置集示例
{
"apiVersion": "tuned.openshift.io/v1",
"kind": "Tuned",
"metadata": {
"name": "provider-gce",
"namespace": "openshift-cluster-node-tuning-operator"
},
"spec": {
"profile": [
{
"data": "[main]\nsummary=GCE Cloud provider-specific profile\n# Your tuning for GCE Cloud provider goes here.\n",
"name": "provider-gce"
}
]
}
}
由于配置集的继承,provider-<cloud-provider> 配置集中指定的任何设置都会被 openshift 配置集及其子配置集覆盖。
2.2. 在带有 HCP 的 ROSA 上创建节点调优配置
您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI rosa 创建调优配置。
先决条件
- 您已下载了 ROSA CLI 的最新版本。
- 在最新版本中有一个集群。
- 您已为节点调整配置了规格文件。
流程
运行以下命令来创建调整配置:
$ rosa create tuning-config -c <cluster_id> --name <name_of_tuning> --spec-path <path_to_spec_file>
您必须提供
spec.json文件的路径,或者命令会返回错误。输出示例
$ I: Tuning config 'sample-tuning' has been created on cluster 'cluster-example'. $ I: To view all tuning configs, run 'rosa list tuning-configs -c cluster-example'
验证
您可以使用以下命令验证您的帐户应用的现有性能优化配置:
$ rosa list tuning-configs -c <cluster_name> [-o json]
您可以为配置列表指定输出类型。
如果没有指定输出类型,您会看到调优配置的 ID 和名称:
没有指定输出类型的输出示例
ID NAME 20468b8e-edc7-11ed-b0e4-0a580a800298 sample-tuning
如果指定了输出类型,如
json,您将以 JSON 文本形式接收调优配置:注意以下 JSON 输出具有硬行处理,用于读清晰性。除非在 JSON 字符串中删除新行,否则此 JSON 输出无效。
指定 JSON 输出的输出示例
[ { "kind": "TuningConfig", "id": "20468b8e-edc7-11ed-b0e4-0a580a800298", "href": "/api/clusters_mgmt/v1/clusters/23jbsevqb22l0m58ps39ua4trff9179e/tuning_configs/20468b8e-edc7-11ed-b0e4-0a580a800298", "name": "sample-tuning", "spec": { "profile": [ { "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n", "name": "tuned-1-profile" } ], "recommend": [ { "priority": 20, "profile": "tuned-1-profile" } ] } } ]
2.3. 为带有 HCP 的 ROSA 修改节点调优配置
您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI ( rosa )查看和更新节点调优配置。
先决条件
- 您已下载了 ROSA CLI 的最新版本。
- 在最新版本中有一个集群
- 您的集群已添加了节点调优配置
流程
您可以使用
rosa describe命令查看调优配置:$ rosa describe tuning-config -c <cluster_id> 1 --name <name_of_tuning> 2 [-o json] 3
此 spec 文件中的以下项是:
没有指定输出类型的输出示例
Name: sample-tuning ID: 20468b8e-edc7-11ed-b0e4-0a580a800298 Spec: { "profile": [ { "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n", "name": "tuned-1-profile" } ], "recommend": [ { "priority": 20, "profile": "tuned-1-profile" } ] }指定 JSON 输出的输出示例
{ "kind": "TuningConfig", "id": "20468b8e-edc7-11ed-b0e4-0a580a800298", "href": "/api/clusters_mgmt/v1/clusters/23jbsevqb22l0m58ps39ua4trff9179e/tuning_configs/20468b8e-edc7-11ed-b0e4-0a580a800298", "name": "sample-tuning", "spec": { "profile": [ { "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n", "name": "tuned-1-profile" } ], "recommend": [ { "priority": 20, "profile": "tuned-1-profile" } ] } }验证调优配置后,您可以使用
rosa edit命令编辑现有的配置:$ rosa edit tuning-config -c <cluster_id> --name <name_of_tuning> --spec-path <path_to_spec_file>
在这个命令中,您可以使用
spec.json文件编辑您的配置。
验证
再次运行
rosa describe命令,以查看您在调优配置中更新了对spec.json文件所做的更改:$ rosa describe tuning-config -c <cluster_id> --name <name_of_tuning>
输出示例
Name: sample-tuning ID: 20468b8e-edc7-11ed-b0e4-0a580a800298 Spec: { "profile": [ { "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n", "name": "tuned-2-profile" } ], "recommend": [ { "priority": 10, "profile": "tuned-2-profile" } ] }
2.4. 删除带有 HCP 的 ROSA 上的节点调优配置
您可以使用 Red Hat OpenShift Service on AWS (ROSA) CLI rosa 删除调优配置。
您无法删除机器池中引用的调优配置。您必须先从所有机器池中删除调优配置,然后才能删除它。
先决条件
- 您已下载了 ROSA CLI 的最新版本。
- 在最新版本上有一个集群。
- 集群具有您要删除的节点调优配置。
流程
要删除调整配置,请运行以下命令:
$ rosa delete tuning-config -c <cluster_id> <name_of_tuning>
集群的调优配置已删除
输出示例
? Are you sure you want to delete tuning config sample-tuning on cluster sample-cluster? Yes I: Successfully deleted tuning config 'sample-tuning' from cluster 'sample-cluster'