集群管理
配置 Red Hat OpenShift Service on AWS clusters
摘要
第 1 章 集群通知 复制链接链接已复制到粘贴板!
集群通知(有时称为服务日志)是有关集群状态、健康或性能的消息。
集群通知是 Red Hat Site Reliability Engineering (SRE)与受管集群健康状况进行通信的主要方法。Red Hat SRE 可能还会使用集群通知来提示您执行操作,以便解决或防止集群出现问题。
集群所有者和管理员必须定期检查和操作集群通知,以确保集群健康和支持。
您可以在 Red Hat Hybrid Cloud Console 的 Cluster history 选项卡中查看集群通知。默认情况下,只有集群所有者以电子邮件形式接收集群通知。如果其他用户需要接收集群通知电子邮件,请将每个用户添加为集群的通知联系人。
1.2. 从集群通知中期望什么 复制链接链接已复制到粘贴板!
作为集群管理员,您需要了解何时发送集群通知,以及它们的类型和严重性级别,以便有效地了解集群的健康状况和管理需求。
1.2.1. 集群通知策略 复制链接链接已复制到粘贴板!
集群通知旨在让您了解集群的健康状况以及影响它的高影响事件。
大多数集群通知都会自动生成并自动发送,以确保立即通知问题或对集群状态的重要更改。
在某些情况下,Red Hat Site Reliability Engineering (SRE)会创建并发送集群通知,以便为复杂的问题提供额外的上下文和指导。
集群通知不会针对低影响事件、低风险安全更新、日常操作和维护或次要的临时问题发送,它们会被 Red Hat SRE 快速解决。
红帽服务在以下情况下自动发送通知:
- 远程健康监控或环境验证检查会检测到集群中的问题,例如当 worker 节点有低磁盘空间时。
- 例如,当调度的维护或升级开始或集群操作受到事件的影响时,会发生大量集群生命周期事件,但不需要客户干预。
- 例如,当集群所有权或管理控制从一个用户传输到另一个用户时,会进行大量集群管理变化。
- 集群订阅会被更改或更新,例如,当红帽对集群提供订阅条款或功能的更新时。
SRE 在以下情况下创建并发送通知:
- 事件会导致影响集群可用性或性能的降级或中断,例如,您的云供应商有一个区域中断。SRE 发送后续通知,以告知您事件解析进度,以及事件解决的时间。
- 在集群中检测到安全漏洞、安全漏洞或异常活动。
- 红帽检测到您所做的更改是创建或可能导致集群不稳定的。
- 红帽检测到您的工作负载是否在集群中造成性能下降或不稳定。
1.2.2. 集群通知严重性级别 复制链接链接已复制到粘贴板!
每个集群通知都有一个关联的严重性级别,可帮助您识别对您的业务有最大影响的通知。您可以根据 Red Hat Hybrid Cloud Console 中的这些严重性级别在集群的 Cluster history 选项卡中过滤集群通知。
红帽对集群通知使用以下严重性级别,从大多数到最严重:
- Critical
- 需要立即操作。服务或集群的一个或多个关键功能无法正常工作,或者将很快停止工作。关键警报非常重要,足以页面调用的员工和中断常规工作流。
- 主
- 强烈建议立即采取措施。集群的一个或多个关键功能将很快停止工作。如果一个主要问题没有及时解决,则可能会导致严重问题。
- Warning
- 尽快需要操作。集群的一个或多个关键功能没有最佳工作,但可能进一步降级,但不给集群正常运行造成直接危险。
- info
- 不需要操作。此严重性不描述需要解决的问题,只有有关有意义的或重要生命周期、服务或集群事件的重要信息。
- Debug
- 不需要操作。调试通知提供有关不太重要的生命周期、服务或集群事件的低级别信息,以帮助调试意外行为。
1.2.3. 集群通知类型 复制链接链接已复制到粘贴板!
每个集群通知都有一个关联的通知类型,可帮助您识别与您的角色和职责相关的通知。您可以根据 Red Hat Hybrid Cloud Console 中的这些类型在集群的 Cluster history 选项卡中过滤集群通知。
红帽使用以下通知类型来指示通知相关性。
- 容量管理
- 通知与更新、创建或删除节点池、机器池、计算副本或配额(负载均衡器、存储等)相关的事件。
- 集群访问
- 有关添加或删除组、角色或身份提供程序的事件通知,例如,当 SRE 无法访问集群时,因为 STS 凭证已过期,当 AWS 角色的配置问题或添加或删除身份提供程序时。
- 集群附加组件
- 与附加组件的附加管理或升级维护相关的事件通知,例如,当安装、升级或删除附加组件时,或者因为不满足要求而无法安装。
- 集群配置
- 集群调优事件、工作负载监控和动态检查的通知。
- 集群生命周期
- 集群或集群资源创建、删除和注册的通知,或更改集群或资源状态(例如,就绪或休眠)。
- 集群网络
- 与集群网络相关的通知,包括 HTTP/S 代理、路由器和入口状态。
- 集群所有权
- 与集群所有权相关的通知从一个用户转移到另一个用户。
- 集群扩展
- 与更新、创建或删除节点池、机器池、计算副本或配额相关的通知。
- 集群安全性
- 与集群安全性相关的事件,例如,增加访问尝试次数、信任捆绑包的更新或具有安全影响的软件更新。
- 集群订阅
- 集群过期、试用集群通知,或者从免费切换到付费。
- 集群更新
- 与升级相关的任何内容,如升级维护或启用。
- 客户支持
- 支持问题单状态更新。
- 常规通知
- 默认通知类型。这仅用于没有更具体的类别的通知。
1.3. 使用 Red Hat Hybrid Cloud Console 查看集群通知 复制链接链接已复制到粘贴板!
集群通知提供有关集群健康状况的重要信息。您可以在 Red Hat Hybrid Cloud Console 上的 Cluster history 选项卡中查看发送到集群的通知。
先决条件
- 已登陆到 Hybrid Cloud 控制台。
流程
- 进入到 Hybrid Cloud Console 的 Clusters 页。
- 点集群名称进入集群详情页面。
点 Cluster history 选项卡。
集群通知会出现在 Cluster history 标题下。
可选:过滤相关集群通知
使用过滤器控件隐藏与您无关的集群通知,以便您可以专注于专业知识,或解决严重问题。您可以根据通知描述、严重性级别、通知类型、收到通知以及系统或个人触发通知中的文本过滤通知。
1.4. 集群通知电子邮件 复制链接链接已复制到粘贴板!
默认情况下,当集群通知发送到集群时,也会作为集群所有者发送电子邮件。您可以为通知电子邮件配置附加接收者,以确保所有适当的用户都保持有关集群状态的了解。
1.4.1. 在集群中添加通知联系人 复制链接链接已复制到粘贴板!
当集群通知发送到集群时,通知联系人会收到电子邮件。默认情况下,只有集群所有者会收到集群通知电子邮件。您可以将其他集群用户配置为集群支持设置中的附加通知联系人。
先决条件
- 您的集群已部署并注册到 Red Hat Hybrid Cloud Console。
- 以集群所有者或具有集群编辑器角色的用户身份登录到 Hybrid Cloud 控制台。
- 预期的通知接收者有一个与集群所有者相同的机构关联的红帽客户门户网站帐户。
流程
- 进入到 Hybrid Cloud Console 的 Clusters 页。
- 点集群名称进入集群详情页面。
- 点 Support 标签页。
- 在 Support 选项卡中,找到 Notification contacts 部分。
- 单击 Add notification contact。
- 在 Red Hat username 或 email 字段中输入新接收者的用户名。
- 点 Add contact。
验证步骤
- 此时会显示 "Notification contact added successfully" 信息。
故障排除
- 禁用 Add notification contact 按钮
- 对于没有权限添加通知联系人的用户,这个按钮被禁用。使用集群所有者、集群编辑器或集群管理员角色登录到帐户,然后重试。
- error:
Could not find find any account identified by <username> 或 &
lt;email-address>
- 当预期的通知接收者不是与集群所有者相同的红帽帐户机构的一部分时,会发生此错误。请联系您的机构管理员,将预期的接收者添加到相关机构,然后重试。
1.4.2. 从集群中删除通知联系人 复制链接链接已复制到粘贴板!
当集群通知发送到集群时,通知联系人会收到电子邮件。
您可以删除集群支持设置中的通知联系人,以防止它们接收通知电子邮件。
先决条件
- 您的集群已部署并注册到 Red Hat Hybrid Cloud Console。
- 以集群所有者或具有集群编辑器角色的用户身份登录到 Hybrid Cloud 控制台。
流程
- 进入到 Hybrid Cloud Console 的 Clusters 页。
- 点集群名称进入集群详情页面。
- 点 Support 标签页。
- 在 Support 选项卡中,找到 Notification contacts 部分。
- 点您要删除的接收者旁的选项菜单(swig)。
- 点击 Delete。
验证步骤
- 这时会显示"Notification contact deleted successfully"消息。
1.5. 故障排除 复制链接链接已复制到粘贴板!
如果您没有收到集群通知电子邮件
-
确保从
@redhat.com
地址发送的电子邮件没有过滤掉您的电子邮件。 - 确保您的正确电子邮件地址列为集群的通知联系人。
- 询问集群所有者或管理员将您添加为通知联系人: 集群通知电子邮件。
如果您的集群没有收到通知
-
确保集群可以访问
api.openshift.com
上的资源。
第 2 章 配置私有连接 复制链接链接已复制到粘贴板!
2.1. 配置私有连接 复制链接链接已复制到粘贴板!
可以实施私有集群访问权限,以满足 Red Hat OpenShift Service on AWS 环境的需求。
流程
访问 Red Hat OpenShift Service on AWS AWS 帐户,并使用以下一个或多个方法建立到集群的私有连接:
- 配置 AWS VPC 对等 :启用 VPC 对等路由两个私有 IP 地址之间的网络流量。
- 配置 AWS VPN :建立虚拟专用网络,将私有网络安全地连接到您的 Amazon 虚拟私有云。
- 配置 AWS Direct Connect :配置 AWS Direct Connect 以在您的私有网络和 AWS Direct Connect 位置之间建立专用网络连接。
2.2. 配置 AWS VPC 对等 复制链接链接已复制到粘贴板!
这个示例过程配置一个 Amazon Web Services (AWS) VPC,其中包含一个 Red Hat OpenShift Service on AWS 集群作为另外一个 AWS VPC 网络的对等(peer)。有关创建 AWS VPC 交换连接或其它可能配置的更多信息,请参阅 AWS VPC Peering 指南。
2.2.1. VPC 对等术语 复制链接链接已复制到粘贴板!
当在两个独立 AWS 帐户中的两个 VPC 之间设置 VPC 对等连接时,会使用以下术语:
Red Hat OpenShift Service on AWS AWS 账户 | 包括 Red Hat OpenShift Service on AWS 集群的 AWS 账户。 |
Red Hat OpenShift Service on AWS Cluster VPC | 包括 Red Hat OpenShift Service on AWS 集群的 VPC。 |
客户 AWS 帐户 | 您要进行对等的非 Red Hat OpenShift Service on AWS AWS 账户。 |
客户 VPC | 您要进行对等的 AWS 帐户中的 VPC。 |
客户 VPC 区域 | 客户 VPC 所在的区域。 |
从 2018 年 7 月起,AWS 支持在所有商业区域 (不包括中国) 之间的 inter-region VPC。
2.2.2. 启动 VPC 对等请求 复制链接链接已复制到粘贴板!
您可以将来自 Red Hat OpenShift Service on AWS 帐户的 VPC 对等连接请求发送到客户 AWS 帐户。
前提条件
收集启动对等请求所需的客户 VPC 的以下信息:
- 客户 AWS 帐号
- 客户 VPC ID
- 客户 VPC 区域
- 客户 VPC CIDR
- 检查 Red Hat OpenShift Service on AWS Cluster VPC 使用的 CIDR 块。如果与客户 VPC 的 CIDR 块重叠或匹配,则无法在这两个 VPC 之间对等。有关详细信息,请参阅 Amazon VPC 不支持的 VPC 仪表板配置文档。如果 CIDR 块没有重叠,您可以继续执行这个过程。
流程
- 登录到 Red Hat OpenShift Service on AWS AWS 帐户的 Web 控制台,在托管集群的区域进入 VPC 仪表板。
- 进入 Peering Connections 页面,点 Create Peering Connection 按钮。
验证您登录到的帐户的详情,以及您要连接的帐户和 VPC 的详情:
- 对等连接名称标签 :为 VPC Peering Connection 设置一个描述性名称。
- VPC (Requester) :从列表中选择 Red Hat OpenShift Service on AWS Cluster VPC ID。
- 帐户 :选择 另一个帐户 并提供客户 AWS 帐户号 *(不带横线)。
- 区域 :如果客户 VPC 区域与当前区域不同,请选择 Another Region,然后从列表中选择客户 VPC 区域。
- VPC (Accepter) :设置客户 VPC ID。
- 点 Create Peering Connection。
- 确认请求变为 Pending 状态。如果它变为 Failed 状态,请确认详情并重复此过程。
2.2.3. 接受 VPC 对等请求 复制链接链接已复制到粘贴板!
创建 VPC 对等连接后,您必须接受客户 AWS 帐户中的请求。
前提条件
- 启动 VPC 对等请求。
流程
- 登录到 AWS Web 控制台。
- 进入 VPC Service。
- 进入 Peering Connections。
- 点 Pending peering connection。
- 确认请求来自于的 AWS 帐户和 VPC ID。这应该来自 Red Hat OpenShift Service on AWS AWS 帐户和 Red Hat OpenShift Service on AWS 集群 VPC。
- 点 Accept Request。
2.2.4. 配置路由表 复制链接链接已复制到粘贴板!
接受 VPC 对等请求后,两个 VPC 必须将其路由配置为在对等连接间进行通信。
前提条件
- 启动并接受 VPC 对等请求。
流程
- 登录到 Red Hat OpenShift Service on AWS AWS 帐户的 AWS Web 控制台。
- 导航到 VPC Service,然后进入 Route tables。
为 Red Hat OpenShift Service on AWS Cluster VPC 选择路由表。
注意在一些集群中,特定 VPC 可能有多个路由表。选择具有多个显式关联子网的私有子网。
- 选择 Routes 标签页,然后选择 Edit。
- 在 Destination 文本框中输入 Customer VPC CIDR 块。
- 在 Target 文本框中输入 Peering Connection ID。
- 点 Save。
您必须使用其他 VPC 的 CIDR 块完成相同的进程:
- 登录到 Customer AWS Web Console → VPC Service → Route Tables。
- 选择 VPC 的路由表。
- 选择 Routes 标签页,然后选择 Edit。
- 在 Destination 文本框中输入 Red Hat OpenShift Service on AWS Cluster VPC CIDR 块。
- 在 Target 文本框中输入 Peering Connection ID。
- 点 Save Changes。
VPC peering 连接现已完成。按照验证过程,确保对等连接间的连接正常工作。
2.2.5. 验证 VPC 对等的故障排除 复制链接链接已复制到粘贴板!
设置 VPC 对等连接后,最好确认它已经配置且正常工作。
前提条件
- 启动并接受 VPC 对等请求。
- 配置路由表。
流程
在 AWS 控制台中,查看对等集群 VPC 的路由表。确保配置了路由表的步骤,并且有一个路由表条目,将 VPC CIDR 范围目的地指向对等连接目标。
如果路由在 AWS Cluster VPC 上的 Red Hat OpenShift Service 路由表和客户 VPC 路由表上都正确,则应该使用
netcat
方法测试连接。如果测试调用成功,则 VPC 对等可以正常工作。要测试到端点设备的网络连接,
nc
(或netcat
)是一个有用的故障排除工具。它包含在默认镜像中,如果可以建立连接,提供快速和清晰的输出:使用
busybox
镜像创建一个临时 pod,它会自行清理:oc run netcat-test \ --image=busybox -i -t \ --restart=Never --rm \ -- /bin/sh
$ oc run netcat-test \ --image=busybox -i -t \ --restart=Never --rm \ -- /bin/sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
nc
检查连接。成功连接结果示例:
/ nc -zvv 192.168.1.1 8080 10.181.3.180 (10.181.3.180:8080) open sent 0, rcvd 0
/ nc -zvv 192.168.1.1 8080 10.181.3.180 (10.181.3.180:8080) open sent 0, rcvd 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 连接结果示例:
/ nc -zvv 192.168.1.2 8080 nc: 10.181.3.180 (10.181.3.180:8081): Connection refused sent 0, rcvd 0
/ nc -zvv 192.168.1.2 8080 nc: 10.181.3.180 (10.181.3.180:8081): Connection refused sent 0, rcvd 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
退出容器,该容器自动删除 Pod:
/ exit
/ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 配置 AWS VPN 复制链接链接已复制到粘贴板!
这个示例流程配置 Amazon Web Services (AWS) Red Hat OpenShift Service on AWS 集群来使用客户的现场硬件 VPN 设备。
AWS VPN 目前不提供将 NAT 应用到 VPN 流量的受管选项。如需了解更多详细信息,请参阅 AWS 知识库。
不支持通过私有连接路由所有流量,如 0.0.0.0/0
。这需要删除互联网网关,它将禁用 SRE 管理流量。
有关使用硬件 VPN 设备将 AWS VPC 连接到远程网络的更多信息,请参阅 Amazon VPC VPN 连接 文档。
2.3.1. 创建 VPN 连接 复制链接链接已复制到粘贴板!
您可以按照以下过程,配置 Amazon Web Services (AWS) Red Hat OpenShift Service on AWS 集群来使用客户的现场硬件 VPN 设备。
前提条件
- 硬件 VPN 网关设备模型和软件版本,例如 Cisco ASA 运行版本 8.3。请参阅 Amazon VPC Network Administrator 指南,以确认 AWS 是否支持您的网关设备。
- VPN 网关设备的公共、静态 IP 地址。
- BGP 或静态路由:如果需要 BGP,则需要 ASN。如果静态路由,必须至少配置一个静态路由。
- 可选 :可访问服务的 IP 和端口/Protocol 来测试 VPN 连接。
2.3.1.1. 配置 VPN 连接 复制链接链接已复制到粘贴板!
流程
- 登陆到 Red Hat OpenShift Service on AWS AWS Account Dashboard,然后进入 VPC 仪表板。
- 在 Virtual Private Cloud 下,点 您的 VPC,找到包含 Red Hat OpenShift Service on AWS 集群的 VPC 的名称和 VPC ID。
- 在 Virtual private network (VPN) 下,点 Customer gateway。
- 点 Create customer gateway 并为它指定一个有意义的名称。
- 在 BGP ASN 字段中输入客户网关设备的 ASN。
- 在 IP 地址字段中,输入客户网关设备的外部接口的 IP 地址。
- 单击 创建客户网关。
如果您还没有附加到预期的 VPC 的虚拟私有网关:
- 在 VPC 仪表板中点 Virtual Private Gateways。
- 单击 Create virtual private gateway,为它指定一个有意义的名称。
- 单击 Create virtual private gateway,保留 Amazon 默认 ASN。
- 选择新创建的网关。
- 从列表中选择 Actions,然后点 Attach to VPC。
- 选择 Available VPC 下的新创建的网关,并点击 Attach to VPC 将其附加到您之前标识的集群 VPC。
2.3.1.2. 建立 VPN 连接 复制链接链接已复制到粘贴板!
流程
- 在 VPC 仪表板中,在 Virtual private network (VPN)下点 Site-to-Site VPN 连接。
点 Create VPN 连接。
- 为它指定有意义的名称标签。
- 选择之前创建的虚拟专用网关。
- 对于客户网关,请选择 现有。
- 按名称选择 Customer gateway id。
- 如果 VPN 将使用 BGP,请选择 Dynamic,否则选择 Static 并输入 Static IP CIDR。如果有多个 CIDR,请将每个 CIDR 添加为另一个规则。
- 点 Create VPN 连接。
- 在 State 下,等待 VPN 状态从 Pending 变为 Available,大约有 5 到 10 分钟。
选择您刚才创建的 VPN 并点 Download configuration。
- 从列表中,选择客户网关设备的供应商、平台和版本,然后单击 下载。
- Generic 供应商配置也可用于以纯文本格式检索信息。
建立 VPN 连接后,请确定设置路由传播,或者 VPN 可能无法正常工作。
请注意,VPC 子网信息,您必须作为远程网络添加到配置中。
2.3.1.3. 启用 VPN 路由传播 复制链接链接已复制到粘贴板!
设置 VPN 连接后,您必须确保启用了路由传播,以便将所需的路由添加到 VPC 的路由表中。
流程
- 在 VPC 仪表板中,在 Virtual Private Cloud 下点 Route tables。
选择与 VPC 关联的私有 Route 表,该表包含您的 Red Hat OpenShift Service on AWS。
注意在一些集群中,特定 VPC 可能有多个路由表。选择具有多个显式关联子网的私有子网。
- 点 Route Propagation 选项卡。
在出现的表中,您应该看到之前创建的虚拟专用网关。检查 Propagate 列中的值。
- 如果 Propagation 设为 No,请单击 Edit route propagation,选中 Propagation 中的 Enable 复选框,然后单击 Save。
在配置 VPN 隧道和 AWS 检测到它为 Up后,您的静态或 BGP 路由会自动添加到路由表中。
2.3.2. 验证 VPN 连接 复制链接链接已复制到粘贴板!
设置 VPN 隧道后,您可以验证隧道是否在 AWS 控制台中,并且通过隧道连接正常工作。
前提条件
- 创建 VPN 连接。
流程
验证隧道是否在 AWS 中启动。
- 在 Virtual private network (VPN) 下,从 VPC 仪表板中点 Site-to-Site VPN 连接。
- 选择之前创建的 VPN 连接并点击 Tunnel 详情 选项卡。
- 您应该可以看到至少一个 VPN 隧道处于 Up 状态。
验证连接。
要测试到端点设备的网络连接,
nc
(或netcat
)是一个有用的故障排除工具。它包含在默认镜像中,如果可以建立连接,提供快速和清晰的输出:使用
busybox
镜像创建一个临时 pod,它会自行清理:oc run netcat-test \ --image=busybox -i -t \ --restart=Never --rm \ -- /bin/sh
$ oc run netcat-test \ --image=busybox -i -t \ --restart=Never --rm \ -- /bin/sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
nc
检查连接。成功连接结果示例:
/ nc -zvv 192.168.1.1 8080 10.181.3.180 (10.181.3.180:8080) open sent 0, rcvd 0
/ nc -zvv 192.168.1.1 8080 10.181.3.180 (10.181.3.180:8080) open sent 0, rcvd 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 连接结果示例:
/ nc -zvv 192.168.1.2 8080 nc: 10.181.3.180 (10.181.3.180:8081): Connection refused sent 0, rcvd 0
/ nc -zvv 192.168.1.2 8080 nc: 10.181.3.180 (10.181.3.180:8081): Connection refused sent 0, rcvd 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
退出容器,该容器自动删除 Pod:
/ exit
/ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.3. VPN 连接故障排除 复制链接链接已复制到粘贴板!
隧道没有连接
如果隧道连接仍然处于 Down 状态,您可以验证以下几个方面:
隧道没有保持连接
如果隧道连接无法稳定地保持为 Up,代表所有 AWS 隧道连接都必须从您的网关启动。AWS 隧道不会启动隧道。
红帽建议在持续发送"中断"流量的隧道端设置 SLA Monitor (Cisco ASA)或一些设备,例如 ping
、nc
或 telnet
,位于 VPC CIDR 范围内配置的任何 IP 地址。连接是否成功并不重要,只要流量被定向到隧道。
处于 Down 状态的二级隧道
创建 VPN 隧道时,AWS 会创建额外的故障转移隧道。根据网关设备,有时第二个隧道将显示为 Down 状态。
AWS 通知如下:
You have new non-redundant VPN connections One or more of your vpn connections are not using both tunnels. This mode of operation is not highly available and we strongly recommend you configure your second tunnel. View your non-redundant VPN connections.
You have new non-redundant VPN connections
One or more of your vpn connections are not using both tunnels. This mode of
operation is not highly available and we strongly recommend you configure your
second tunnel. View your non-redundant VPN connections.
2.4. 配置 AWS Direct Connect 复制链接链接已复制到粘贴板!
此过程描述了接受 Red Hat OpenShift Service on AWS 的 AWS Direct Connect 虚拟接口。有关 AWS Direct Connect 类型和配置的更多信息,请参阅 AWS Direct Connect 组件文档。
2.4.1. AWS Direct Connect 方法 复制链接链接已复制到粘贴板!
Direct Connect 连接需要一个托管的、连接到一个 Direct Connect Gateway (DXGateway) 的虚拟接口 (VIF),它与一个 Virtual Gateway (VGW) 或一个 Transit Gateway 进行关联,从而可以访问同一个账户或另外一个账户中的远程 VPC。
如果您没有现有的 DXGateway,则需要创建托管的 VIF,在 Red Hat OpenShift Service on AWS AWS 账户中创建 DXGateway 和 VGW。
如果您有一个现有的 DXGateway 连接到一个或多个现有 VGW,该过程涉及 AWS 帐户上的 Red Hat OpenShift Service,将 Association Proposal 发送到 DXGateway 所有者。DXGateway 所有者必须确保所提议的 CIDR 不会与他们关联的任何其他 VGW 冲突。
详情请查看以下 AWS 文档:
当连接到现有的 DXGateway 时,您需要负责相关的成本。
有两个可用的配置选项:
方法 1 | 创建托管的 VIF,然后创建 DXGateway 和 VGW。 |
方法 2 | 通过您拥有的现有的 Direct Connect Gateway 请求连接。 |
2.4.2. 创建托管的虚拟接口 复制链接链接已复制到粘贴板!
前提条件
- 收集 Red Hat OpenShift Service on AWS AWS 账户 ID。
2.4.2.1. 确定直接连接连接的类型 复制链接链接已复制到粘贴板!
查看 Direct Connect Virtual Interface 详情以确定连接的类型。
流程
- 登陆到 Red Hat OpenShift Service on AWS AWS Account Dashboard 并选择正确的区域。
- 从 Services 菜单选择 Direct Connect。
- 将有一个或多个虚拟接口等待被接受,请选择其中一个来查看 Summary。
- 查看虚拟接口类型:private 或 public。
- 记录下 Amazon side ASN 的值。
如果 Direct Connect Virtual 接口类型是 Private,则会创建一个虚拟专用网关。如果直接连接虚拟接口是公共的,则会创建一个直接连接网关。
2.4.2.2. 创建私有直接连接 复制链接链接已复制到粘贴板!
如果 Direct Connect Virtual Interface 类型为 Private,则会创建一个 Private Direct Connect Connect。
流程
- 登陆到 Red Hat OpenShift Service on AWS AWS Account Dashboard 并选择正确的区域。
- 在 AWS 区域中,从 Services 菜单中选择 VPC。
- 从 虚拟专用网络(VPN),选择 虚拟专用网关。
- 单击 Create virtual private gateway。
- 为 Virtual Private Gateway 指定一个合适的名称。
- 在 Enter custom ASN 字段中选择 Custom ASN,输入前面收集的 Amazon side ASN 值。
- 单击 Create virtual private gateway。
- 点新创建的 Virtual Private Gateway,从 Actions 选项卡中选择 Attach to VPC。
- 从列表中选择 Red Hat OpenShift Service on AWS Cluster VPC,然后点 Attach VPC。
注: 编辑 kubelet 配置将导致重新创建机器池的节点。这是否?
2.4.2.3. 创建公共直接连接 复制链接链接已复制到粘贴板!
如果 Direct Connect Virtual Interface 类型为 Public,则会创建一个公共直接连接。
流程
- 登陆到 Red Hat OpenShift Service on AWS AWS Account Dashboard 并选择正确的区域。
- 在 Red Hat OpenShift Service on AWS AWS Account 区域中,选择 Direct Connect from the Services 菜单。
- 选择 Direct Connect gateway 和 Create Direct Connect gateway。
- 为直接连接网关指定合适的名称。
- 在 Amazon side ASN 中,输入前面收集的 Amazon side ASN 值。
- 单击 Create the Direct Connect gateway。
2.4.2.4. 验证虚拟接口 复制链接链接已复制到粘贴板!
在直接连接虚拟接口被接受后,等待一个简短的时间并查看接口的状态。
流程
- 登陆到 Red Hat OpenShift Service on AWS AWS Account Dashboard 并选择正确的区域。
- 在 Red Hat OpenShift Service on AWS AWS Account 区域中,选择 Direct Connect from the Services 菜单。
- 从列表中选择一个 Direct Connect Virtual Interfaces。
- 检查 Interface State 的状态为 Available
- 检查 Interface BGP 状态是否为 Up。
- 对剩余的直接连接接口重复此验证。
在 Direct Connect Virtual Interfaces 可用时,您可以在 AWS 帐户仪表板上登录到 Red Hat OpenShift Service,并下载您的侧配置的直接连接配置文件。
2.4.3. 连接到现有直接连接网关 复制链接链接已复制到粘贴板!
前提条件
- 确认 AWS VPC 上的 Red Hat OpenShift Service 的 CIDR 范围不会与您关联的任何其他 VGW 冲突。
收集以下信息:
- 直接连接网关 ID。
- 与虚拟接口关联的 AWS 帐户 ID。
- 为 DXGateway 分配的 BGP ASN。可选:也可以使用 Amazon 默认 ASN。
流程
- 登陆到 Red Hat OpenShift Service on AWS AWS Account Dashboard 并选择正确的区域。
- 在 AWS AWS 帐户区域中的 Red Hat OpenShift Service 中,从 Services 菜单中选择 VPC。
- 从 虚拟专用网络(VPN),选择 虚拟专用网关。
- 选择 Create virtual private gateway。
- 在 Details 字段中为虚拟专用网关指定合适的名称。
- 点 Custom ASN,然后输入前面收集的 Amazon side ASN 值或使用 Amazon Provided ASN。
- 单击 Create virtual private gateway。
- 在 Red Hat OpenShift Service on AWS AWS Account 区域中,选择 Direct Connect from the Services 菜单。
- 单击 虚拟专用网关,再选择虚拟专用网关。
- 单击 View details。
- 点 Direct Connect 网关关联 选项卡。
- 点 关联直接连接网关
- 在 关联 帐户类型 下,对于帐户所有者,单击 Another account。
- 在关联设置下,用于直接连接网关 ID,输入 Direct Connect 网关的 ID。
- 对于 直接连接网关所有者,请输入拥有直接连接网关的 AWS 帐户的 ID。
- 可选:为 允许前缀 添加前缀,使用逗号分隔它们,或者将它们放在单独的行中。
- 单击 关联直接连接网关。
- 在发送关联建议后,它会等待您接受的接受。AWS 文档中提供了您必须执行的最终步骤。
2.4.4. 直接连接故障排除 复制链接链接已复制到粘贴板!
有关进一步的故障排除文档,请参阅故障排除 AWS 直接连接文档。
第 3 章 Red Hat OpenShift Service on AWS 的集群自动扩展 复制链接链接已复制到粘贴板!
将自动扩展应用到 Red Hat OpenShift Service on AWS 集群涉及使用自动扩展配置一个或多个机器池。您可以使用 Cluster Autoscaler 来进一步配置适用于自动扩展的所有机器池的集群范围的自动扩展。
3.1. 关于集群自动扩展 复制链接链接已复制到粘贴板!
集群自动扩展会调整 Red Hat OpenShift Service on AWS 集群的大小,以满足其当前的部署需求。它使用 Kubernetes 样式的声明性参数来提供基础架构管理,而且这种管理不依赖于特定云提供商的对象。集群自动控制会在集群范围内有效,不与特定的命名空间相关联。在 Red Hat OpenShift Service on AWS 中,Cluster Autoscaler 被完全管理,这意味着它与 control plane 一起托管。
当由于资源不足而无法在任何当前 worker 节点上调度 pod 时,或者在需要另一个节点来满足部署需求时,集群自动扩展会增加集群的大小。集群自动扩展不会将集群资源增加到超过您指定的限制。
集群自动扩展仅在属于自动扩展机器池的节点上计算总内存、CPU 和 GPU。没有自动扩展的所有机器池节点都不包括在这个聚合中。例如,如果您在带有三个机器池的 Red Hat OpenShift Service on AWS 集群上将 maxNodesTotal
设置为 50
,则集群自动扩展仅在那些自动扩展的机器池中将总节点限制为 50
。单个手动扩展机器池可以有额外的节点,使整个集群节点总数超过 50
个。
自动节点删除
每隔 10 秒,集群自动扩展会检查集群中不需要哪些节点,并移除它们。如果满足以下条件,集群自动扩展会考虑要删除的节点:
-
节点使用率低于集群的节点 利用率级别 阈值。节点使用率级别是请求的资源的总和,由分配给节点的资源划分。如果您没有在
ClusterAutoscaler
自定义资源中指定值,集群自动扩展会使用默认值0.5
,它对应于 50% 的利用率。 - 集群自动扩展可以将节点上运行的所有 pod 移到其他节点。Kubernetes 调度程序负责在节点上调度 pod。
- 集群自动扩展没有缩减禁用注解。
如果节点上存在以下类型的 pod,集群自动扩展不会删除该节点:
- 具有限制性 pod 中断预算(PDB)的 Pod。
- 默认不在节点上运行的 Kube 系统 Pod。
- 没有 PDB 或 PDB 限制性太强的 Kube 系统 pod。
- 不受控制器对象支持的 Pod,如部署、副本集或有状态集。
- 具有本地存储的 Pod。
- 因为缺乏资源、节点选择器或关联性不兼容或有匹配的反关联性等原因而无法移至其他位置的 Pod。
-
具有
"cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
注解的 Pod,除非同时也具有"cluster-autoscaler.kubernetes.io/safe-to-evict": "true”
注解。
例如,您可以将最大 CPU 限值设置为 64 个内核,并将集群自动扩展配置为每个创建具有 8 个内核的机器。如果您的集群从 30 个内核开始,集群自动扩展可最多添加具有 32 个内核的 4 个节点,共 62 个。
限制:
如果配置集群自动扩展,则需要额外的使用限制:
- 不要直接修改位于自动扩展节点组中的节点。同一节点组中的所有节点具有相同的容量和标签,并且运行相同的系统 Pod。
- 指定适合您的 Pod 的请求。
- 如果需要防止 Pod 被过快删除,请配置适当的 PDB。
- 确认您的云提供商配额足够大,能够支持您配置的最大节点池。
- 不要运行其他节点组自动扩展器,特别是云提供商提供的自动扩展器。
如果这样做,集群自动扩展只会在自动扩展节点组中添加节点,这会导致可调度 pod。如果可用节点类型无法满足 pod 请求的要求,或者如果可以满足这些要求的节点组已是最大大小,集群自动扩展将无法扩展。
与其他调度功能交互
pod 横向自动扩展(HPA)和集群自动扩展以不同的方式修改集群资源。HPA 根据当前的 CPU 负载更改部署或副本集的副本数。如果负载增加,HPA 会创建新的副本,不论集群可用的资源量如何。如果没有足够的资源,集群自动扩展会添加资源,以便 HPA 创建的 pod 可以运行。如果负载减少,HPA 会停止一些副本。如果此操作导致某些节点利用率低下或完全为空,集群自动扩展会删除不必要的节点。
集群自动扩展会考虑 pod 优先级。如果集群没有足够的资源,则“Pod 优先级和抢占”功能可根据优先级调度 Pod,但集群自动扩展会确保集群具有运行所有 Pod 需要的资源。为满足这两个功能,集群自动扩展包含一个优先级截止函数。您可以使用此截止函数来调度“尽力而为”的 Pod,它们不会使集群自动扩展增加资源,而是仅在有可用备用资源时运行。
优先级低于截止值的 Pod 不会导致集群扩展或阻止集群缩减。系统不会添加新节点来运行 Pod,并且可能会删除运行这些 Pod 的节点来释放资源。
3.2. 使用带有 ROSA CLI 的互动模式在集群创建过程中启用自动扩展 复制链接链接已复制到粘贴板!
您可以在终端的交互模式中使用 ROSA 命令行界面(CLI) (rosa
),以便在集群创建过程中设置集群范围的自动扩展行为。
交互模式提供有关可用可配置参数的更多信息。交互模式也执行基本检查和 preflight 验证,这意味着如果提供的值无效,终端会输出一个有效输入的提示。
流程
在集群创建过程中,使用
--enable-autoscaling
和--interactive
参数启用集群自动扩展:示例
rosa create cluster --cluster-name <cluster_name> --enable-autoscaling --interactive
$ rosa create cluster --cluster-name <cluster_name> --enable-autoscaling --interactive
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您的集群名称超过 15 个字符,它将包含自动生成的域前缀作为您 provisioned 集群 的子域
。
要自定义子域,请使用 --domain-prefix
标志。域前缀不能超过 15 个字符,它必须是唯一的,且在集群创建后无法更改。
出现以下提示时,输入 y 以浏览所有可用的自动扩展选项。
交互式提示符示例
? Configure cluster-autoscaler (optional): [? for help] (y/N) y <enter>
? Configure cluster-autoscaler (optional): [? for help] (y/N) y <enter>
3.3. 使用 ROSA CLI 在集群创建过程中启用自动扩展 复制链接链接已复制到粘贴板!
您可以使用 ROSA 命令行界面(CLI) (rosa
)在集群创建过程中设置集群范围的自动扩展行为。您可以在整个机器或只启用集群中启用自动扩展。
流程
-
在集群创建过程中,在集群名称后键入
--enable autoscaling
来启用机器自动扩展:
如果您的集群名称超过 15 个字符,它将包含自动生成的域前缀作为您 provisioned 集群 的子域
。
要自定义子域,请使用 --domain-prefix
标志。域前缀不能超过 15 个字符,它必须是唯一的,且在集群创建后无法更改。
示例
rosa create cluster --cluster-name <cluster_name> --enable-autoscaling
$ rosa create cluster --cluster-name <cluster_name> --enable-autoscaling
运行以下命令,设置至少一个参数来启用集群自动扩展:
示例
rosa create cluster --cluster-name <cluster_name> --enable-autoscaling <parameter>
$ rosa create cluster --cluster-name <cluster_name> --enable-autoscaling <parameter>
3.4. 使用 ROSA CLI 的集群自动扩展参数 复制链接链接已复制到粘贴板!
您可以在集群创建命令中添加以下参数,以便在使用 ROSA 命令行界面(CLI) (rosa
)时配置自动扩展参数。
设置 | 描述 | 类型或范围 | 示例/构建 |
---|---|---|---|
| 在缩减前提供 pod 安全终止时间,单位为秒。使用您要使用的秒数替换 命令中的 int。 |
|
|
| pod 必须超过这个值才能使集群自动扩展部署额外的节点。将 命令中的 int 替换为您要使用的数字,可以是负数。 |
|
|
| 集群自动扩展等待置备节点的最长时间。使用整数和时间单位(ns,us,unmarshals,ms,s,m,h)替换命令中的 字符串。 |
|
|
| 集群中节点的最大数量,包括自动扩展节点。使用您要使用的数字替换 命令中的 int。 |
|
|
3.5. 使用 ROSA CLI 在集群创建后编辑自动扩展 复制链接链接已复制到粘贴板!
在使用 ROSA 命令行界面(CLI) (rosa
)时,您可以在创建自动扩展后编辑集群自动扩展的任何特定参数。
流程
要编辑集群自动扩展,请运行以下命令:
示例
rosa edit autoscaler --cluster=<mycluster>
$ rosa edit autoscaler --cluster=<mycluster>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要编辑特定的参数,请运行以下命令:
示例
rosa edit autoscaler --cluster=<mycluster> <parameter>
$ rosa edit autoscaler --cluster=<mycluster> <parameter>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 使用 ROSA CLI 查看自动扩展配置 复制链接链接已复制到粘贴板!
在使用 ROSA 命令行界面(CLI) (rosa
)时,您可以使用 rosa describe autoscaler
命令查看集群自动扩展配置。
流程
要查看集群自动扩展配置,请运行以下命令:
示例
rosa describe autoscaler -h --cluster=<mycluster>
$ rosa describe autoscaler -h --cluster=<mycluster>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 使用机器池管理计算节点 复制链接链接已复制到粘贴板!
4.1. 关于机器池 复制链接链接已复制到粘贴板!
Red Hat OpenShift Service on AWS 使用机器池作为云基础架构之上的弹性动态置备方法。
主要资源包括机器、计算机器集和机器池。
4.1.1. Machines 复制链接链接已复制到粘贴板!
机器是描述 worker 节点主机的基本单元。
4.1.2. 机器集 复制链接链接已复制到粘贴板!
MachineSet
资源是计算机器组。如果需要更多机器或必须缩减机器,请更改计算机器集所属的机器池中的副本数量。
机器集不能在 Red Hat OpenShift Service on AWS 中直接修改。
4.1.3. 机器池 复制链接链接已复制到粘贴板!
机器池是计算机器集的更高级别构造。
机器池创建计算机器集,它们是跨可用性区域相同的配置克隆。机器池在 worker 节点上执行所有主机节点置备管理操作。如果需要更多机器或必须缩减机器,请更改机器池中的副本数量以满足您的计算需求。您可以手动配置扩展或设置自动扩展。
在 Red Hat OpenShift Service on AWS 集群中,托管的 control plane 会在已安装的云区域中跨越多个可用区(AZ)。Red Hat OpenShift Service on AWS 集群中的每个机器池会在单个 AZ 内的单个子网中部署。
Worker 节点无法保证长远,可能随时替换,作为 OpenShift 的正常操作和管理的一部分。有关节点生命周期的更多详细信息,请参阅 其他资源。
单个集群中可以存在多个机器池,每个机器池可以包含唯一的节点类型和节点大小(AWS EC2 实例类型和大小)配置。
4.1.3.1. 集群安装过程中的机器池 复制链接链接已复制到粘贴板!
默认情况下,集群有一个机器池。在集群安装过程中,您可以定义实例类型或大小,并在此机器池中添加标签,并定义根磁盘的大小。
4.1.3.2. 在集群安装后配置机器池 复制链接链接已复制到粘贴板!
集群安装后:
- 您可以删除或向任何机器池添加标签。
- 您可以将额外的机器池添加到现有集群中。
- 如果有没有污点的机器池,您可以向任何机器池添加污点。
如果存在没有污点和至少两个副本的机器池,您可以创建和删除机器池。
注意您无法更改机器池节点类型或大小。机器池节点类型或大小仅在创建期间指定。如果需要不同的节点类型或大小,您必须重新创建机器池并指定所需的节点类型或大小值。
- 您可以为每个添加的机器池添加标签。
Worker 节点无法保证长远,可能随时替换,作为 OpenShift 的正常操作和管理的一部分。有关节点生命周期的更多详细信息,请参阅 其他资源。
流程
可选: 使用默认机器池标签并运行以下命令来在默认机器池后向默认机器池添加标签:
rosa edit machinepool -c <cluster_name> <machinepool_name> -i
$ rosa edit machinepool -c <cluster_name> <machinepool_name> -i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入示例
rosa edit machinepool -c mycluster worker -i
$ rosa edit machinepool -c mycluster worker -i ? Enable autoscaling: No ? Replicas: 3 ? Labels: mylabel=true I: Updated machine pool 'worker' on cluster 'mycluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.3.3. 机器池升级要求 复制链接链接已复制到粘贴板!
Red Hat OpenShift Service on AWS 集群中的每个机器池都独立升级。因为机器池独立升级,所以它们必须保留在托管的 control plane 的 2 个次版本(Y-stream)版本中。例如,如果您托管的 control plane 是 4.16.z,则机器池必须至少为 4.14.z。
下图显示了机器池在 Red Hat OpenShift Service on AWS 集群中的工作方式:
Red Hat OpenShift Service on AWS 集群中的机器池都独立升级,机器池版本必须保留在 control plane 的两个次版本中。
4.1.4. 其他资源 复制链接链接已复制到粘贴板!
4.2. 管理计算节点 复制链接链接已复制到粘贴板!
本文档论述了如何使用 Red Hat OpenShift Service on AWS 管理计算(也称为 worker)节点。
机器池中配置了计算节点的大部分更改。机器池是集群中有相同配置的计算节点的一组计算节点,提供轻松管理。
您可以编辑机器池配置选项,如扩展、添加节点标签和添加污点。
4.2.1. 创建机器池 复制链接链接已复制到粘贴板!
在安装 Red Hat OpenShift Service on AWS 集群时会创建一个机器池。安装后,您可以使用 OpenShift Cluster Manager 或 ROSA 命令行界面(CLI) (rosa
)为集群创建额外的机器池。
对于 rosa
版本 1.2.25 及更早的版本的用户,创建的机器池会标识为 Default
。对于 rosa
版本 1.2.26 及之后的版本的用户,与集群一起创建的机器池被识别为 worker
。
4.2.1.1. 使用 OpenShift Cluster Manager 创建机器池 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Cluster Manager 为 Red Hat OpenShift Service on AWS 集群创建额外的机器池。
先决条件
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
流程
- 进入到 OpenShift Cluster Manager 并选择您的集群。
- 在 Machine pool 选项卡下,点 Add machine pool。
- 添加机器池名称。
从列表中选择 Compute 节点实例类型。实例类型定义机器池中各个计算节点的 vCPU 和内存分配。
注意在创建池后,您无法更改机器池的实例类型。
可选:为机器池配置自动扩展:
- 选择 Enable autoscaling 以自动扩展机器池中的机器数量,以满足部署需求。
设置自动扩展的最小和最大节点数限值。集群自动扩展不会减少或增加机器池节点数超过您指定的限制。
注意另外,您可以在创建机器池后为机器池设置自动扩展首选项。
- 如果没有启用自动扩展,请从下拉菜单中选择 Compute 节点数。这定义了置备到可用区的机器池的计算节点数量。
- 可选:配置 Root 磁盘大小。
可选:为您的机器池添加节点标签和污点:
- 展开 Edit node labels and taints 菜单。
- 在 Node labels 下,为您的节点标签添加 Key 和 Value 项。
在 Taints 下,为您的污点添加 Key 和 Value 条目。
注意只有集群已至少有一个没有污点的机器池时,才能创建带有污点的机器池。
对于每个污点,从下拉菜单中选择 Effect。可用选项包括
NoSchedule
、PreferNoSchedule
和NoExecute
。注意另外,您可以在创建机器池后添加节点标签和污点。
可选:选择用于此机器池中节点的附加自定义安全组。您必须已创建了安全组,并将其与您为这个集群选择的 VPC 关联。您无法在创建机器池后添加或编辑安全组。
重要对于 Red Hat OpenShift Service on AWS 集群上的机器池,可以使用最多 10 个额外的安全组。
- 点 Add machine pool 创建机器池。
验证
- 验证机器池页面中是否存在 机器池,配置是如预期的。
4.2.1.2. 使用 ROSA CLI 创建机器池 复制链接链接已复制到粘贴板!
您可以使用 ROSA 命令行界面(CLI) (rosa
)为 Red Hat OpenShift Service on AWS 集群创建额外的机器池。
先决条件
- 您已在工作站上安装和配置了最新的 ROSA CLI。
- 使用 ROSA CLI 登录您的红帽帐户。
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
流程
要添加不使用自动扩展的机器池,请创建机器池,并定义实例类型、计算(也称为 worker)节点数和节点标签:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
--name=<machine_pool_id>
- 指定机器池的名称。
--replicas=<replica_count>
-
指定要置备的计算节点数量。如果您使用一个可用区部署 Red Hat OpenShift Service on AWS,这定义了置备到区域的机器池的计算节点数量。如果您使用多个可用区部署集群,这会定义在所有区中要置备的计算节点数量,计数必须是 3。在没有配置自动扩展时,需要
--replicas
参数。 --instance-type=<instance_type>
-
可选:为您的机器池中的计算节点设置实例类型。实例类型定义池中各个计算节点的 vCPU 和内存分配。将
<instance_type>
替换为实例类型。默认值为m5.xlarge
。在创建池后,您无法更改机器池的实例类型。 --labels=<key>=<value>,<key>=<value>
-
可选:定义机器池的标签。将
<key>=<value>,<key>=<value>
替换为以逗号分隔的键-值对,例如--labels=key1=value1,key2=value2
。 --taints=<key>=<value>:<effect>,<key>=<value>:<effect>
-
可选:定义机器池的污点。使用每个污点的实际的 key, value, 和 effect 替换 Replace
<key>=<value>:<effect>,<key>=<value>:<effect>
,例如--taints=key1=value1:NoSchedule,key2=value2:NoExecute
。可用效果包括NoSchedule
、PreferNoSchedule
和NoExecute
。 --disk-size=<disk_size>
-
可选:指定 worker 节点磁盘大小。该值可以是 GB、GiB、TB 或 TiB。将
<disk_size
> 替换为数字值和单位,如 example-disk-size=200GiB
。 --availability-zone=<availability_zone_name>
-
可选:您可以在您选择的可用区创建机器池。将
<availability_zone_name
> 替换为可用区名称。 --additional-security-group-ids <sec_group_id>
可选: 对于没有 Red Hat managed VPC 的集群中的机器池,您可以选择要在机器池中使用的其他自定义安全组。您必须已创建了安全组,并将其与您为这个集群选择的 VPC 关联。您无法在创建机器池后添加或编辑安全组。
重要对于 Red Hat OpenShift Service on AWS 集群上的机器池,可以使用最多 10 个额外的安全组。
--subnet <subnet_id>
可选: 对于 BYO VPC 集群,您可以选择子网来创建 Single-AZ 机器池。如果子网没有集群创建子网,则必须有一个带有键
kubernetes.io/cluster/<infra-id
> 且值为shared
的标签。客户可以使用以下命令获取 Infra ID:rosa describe cluster -c <cluster name>|grep "Infra ID:"
$ rosa describe cluster -c <cluster name>|grep "Infra ID:"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Infra ID: mycluster-xqvj7
Infra ID: mycluster-xqvj7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您不能同时设置--
subnet
和--availability-zone
,在 Single-AZ 机器池创建时只允许 1。
以下示例创建一个名为
mymachinepool
的机器池,它使用m5.xlarge
实例类型并具有 2 个计算节点副本。这个示例还添加了 2 个特定于工作负载的标签:rosa create machinepool --cluster=mycluster --name=mymachinepool --replicas=2 --instance-type=m5.xlarge --labels=app=db,tier=backend
$ rosa create machinepool --cluster=mycluster --name=mymachinepool --replicas=2 --instance-type=m5.xlarge --labels=app=db,tier=backend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster' I: To view all machine pools, run 'rosa list machinepools -c mycluster'
I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster' I: To view all machine pools, run 'rosa list machinepools -c mycluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要添加使用自动扩展的机器池,请创建机器池,并定义自动扩展配置、实例类型和节点标签:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
--name=<machine_pool_id>
-
指定机器池的名称。将
<machine_pool_id>
替换为机器池的名称。 --enable-autoscaling
- 在机器池中启用自动扩展来满足部署需求。
--min-replicas=<minimum_replica_count>
and--max-replicas=<maximum_replica_count>
定义最小和最大计算节点限值。集群自动扩展不会减少或增加机器池节点数超过您指定的限制。
--min-replicas
和--max-replicas
参数在可用区的机器池中定义自动扩展限制。--instance-type=<instance_type>
-
可选:为您的机器池中的计算节点设置实例类型。实例类型定义池中各个计算节点的 vCPU 和内存分配。将
<instance_type>
替换为实例类型。默认值为m5.xlarge
。在创建池后,您无法更改机器池的实例类型。 --labels=<key>=<value>,<key>=<value>
-
可选:定义机器池的标签。将
<key>=<value>,<key>=<value>
替换为以逗号分隔的键-值对,例如--labels=key1=value1,key2=value2
。 --taints=<key>=<value>:<effect>,<key>=<value>:<effect>
-
可选:定义机器池的污点。使用每个污点的实际的 key, value, 和 effect 替换 Replace
<key>=<value>:<effect>,<key>=<value>:<effect>
,例如--taints=key1=value1:NoSchedule,key2=value2:NoExecute
。可用效果包括NoSchedule
、PreferNoSchedule
和NoExecute
。 --availability-zone=<availability_zone_name>
-
可选:您可以在您选择的可用区创建机器池。将
<availability_zone_name
> 替换为可用区名称。
以下示例创建一个名为
mymachinepool
的机器池,它使用m5.xlarge
实例类型并启用自动扩展。最少的计算节点限值为 3,最大为 6 个。这个示例还添加了 2 个特定于工作负载的标签:rosa create machinepool --cluster=mycluster --name=mymachinepool --enable-autoscaling --min-replicas=3 --max-replicas=6 --instance-type=m5.xlarge --labels=app=db,tier=backend
$ rosa create machinepool --cluster=mycluster --name=mymachinepool --enable-autoscaling --min-replicas=3 --max-replicas=6 --instance-type=m5.xlarge --labels=app=db,tier=backend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
I: Machine pool 'mymachinepool' created successfully on hosted cluster 'mycluster' I: To view all machine pools, run 'rosa list machinepools -c mycluster'
I: Machine pool 'mymachinepool' created successfully on hosted cluster 'mycluster' I: To view all machine pools, run 'rosa list machinepools -c mycluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要将 Windows License Included 的机器池添加到 Red Hat OpenShift Service on AWS 集群中,请参阅为 AWS 上的 Red Hat OpenShift Service 包括的 AWS Windows License。
只有在满足以下条件时,才能创建 Windows License 包括的机器池:
- 主机集群是一个 Red Hat OpenShift Service on AWS 集群。
实例类型是裸机 EC2。
重要用于 Red Hat OpenShift Service on AWS 的 AWS Windows 许可证只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
验证
您可以列出集群中的所有机器池,或描述独立的机器池。
列出集群中可用的机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR Default No 1/1 m5. xlarge us-east-2c subnet-00552ad67728a6ba3 4.14.34 Yes mymachinepool Yes 3/3-6 m5.xlarge app=db, tier=backend us-east-2a subnet-0cb56f5f41880c413 4.14.34 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR Default No 1/1 m5. xlarge us-east-2c subnet-00552ad67728a6ba3 4.14.34 Yes mymachinepool Yes 3/3-6 m5.xlarge app=db, tier=backend us-east-2a subnet-0cb56f5f41880c413 4.14.34 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 描述集群中特定机器池的信息:
rosa describe machinepool --cluster=<cluster_name> --machinepool=mymachinepool
$ rosa describe machinepool --cluster=<cluster_name> --machinepool=mymachinepool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证机器池已包含在输出中,并且配置符合预期。
4.2.2. 配置机器池磁盘卷 复制链接链接已复制到粘贴板!
可以配置机器池磁盘卷大小,以获得更大的灵活性。默认磁盘大小为 300 GiB。
对于 Red Hat OpenShift Service on AWS 集群,磁盘大小可以从最小 75 GiB 配置为最多 16,384 GiB。
您可以使用 OpenShift Cluster Manager 或 ROSA 命令行界面(CLI) (rosa
)为集群配置机器池磁盘大小。
无法调整现有集群和机器池节点卷的大小。
集群创建的先决条件
- 您可以选择在集群安装过程中为默认机器池选择节点磁盘大小。
集群创建过程
- 在 Red Hat OpenShift Service on AWS 集群向导中导航到 Cluster settings。
- 进入 Machine pool 步骤。
- 选择所需的 Root 磁盘大小。
- 选择 Next 以继续创建集群。
创建机器池的先决条件
- 您可以选择在安装集群后为新机器池选择节点磁盘大小。
创建机器池的步骤
- 进入到 OpenShift Cluster Manager 并选择您的集群。
- 导航到 Machine pool 选项卡。
- 点 Add machine pool。
- 选择所需的 Root 磁盘大小。
- 选择 Add machine pool 来创建机器池。
4.2.2.1. 使用 ROSA CLI 配置机器池磁盘卷 复制链接链接已复制到粘贴板!
集群创建的先决条件
- 您可以选择在集群安装过程中为默认机器池选择根磁盘大小。
集群创建过程
在为所需的根磁盘大小创建 OpenShift 集群时运行以下命令:
rosa create cluster --worker-disk-size=<disk_size>
$ rosa create cluster --worker-disk-size=<disk_size>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该值可以是 GB、GiB、TB 或 TiB。将
<disk_size
> 替换为数字值和单位,如--worker-disk-size=200GiB
。您不能分隔数字和单元。不允许有空格。
创建机器池的先决条件
- 您可以选择在安装集群后为新机器池选择根磁盘大小。
创建机器池的步骤
执行以下命令扩展集群:
rosa create machinepool --cluster=<cluster_id> \ --disk-size=<disk_size>
$ rosa create machinepool --cluster=<cluster_id> \
1 --disk-size=<disk_size>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 通过登录到 AWS 控制台并找到 EC2 虚拟机根卷大小,确认新的机器池磁盘大小。
4.2.3. 删除机器池 复制链接链接已复制到粘贴板!
如果您的工作负载要求已更改,当前机器池已不再满足您的需要,则可以删除机器池。
您可以使用 Red Hat OpenShift Cluster Manager 或 ROSA 命令行界面(CLI) (rosa
)删除机器池。
4.2.3.1. 使用 OpenShift Cluster Manager 删除机器池 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift Cluster Manager 删除 Red Hat OpenShift Service on AWS 集群的机器池。
先决条件
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 集群处于 ready 状态。
- 您有一个没有污点的机器池,至少有两个用于单个 AZ 集群或用于多个 AZ 集群的三个实例。
流程
- 在 OpenShift Cluster Manager 中,导航到 Cluster List 页面,再选择包含您要删除的机器池的集群。
- 在所选集群中,选择 Machine pool 选项卡。
-
在 Machine pool 选项卡中,点您要删除的机器池的 Options 菜单
。
点击 Delete。
所选机器池已删除。
4.2.3.2. 使用 ROSA CLI 删除机器池 复制链接链接已复制到粘贴板!
您可以使用 ROSA 命令行界面(CLI) (rosa
)删除 Red Hat OpenShift Service on AWS 集群的机器池。
对于 rosa
版本 1.2.25 及更早的版本的用户,创建的机器池(ID='Default')不能被删除。对于 rosa
版本 1.2.26 及更高版本的用户,如果集群中的一个机器池没有污点,则创建的机器池(ID='worker')可以被删除。
先决条件
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 集群处于 ready 状态。
- 您有一个没有污点的机器池,并且至少有两个实例用于 Single-AZ 集群,或三个实例用于 Multi-AZ 集群。
流程
在 ROSA CLI 中运行以下命令:
rosa delete machinepool -c=<cluster_name> <machine_pool_ID>
$ rosa delete machinepool -c=<cluster_name> <machine_pool_ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
? Are you sure you want to delete machine pool <machine_pool_ID> on cluster <cluster_name>? (y/N)
? Are you sure you want to delete machine pool <machine_pool_ID> on cluster <cluster_name>? (y/N)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入
y
删除机器池。所选机器池已删除。
4.2.4. 手动扩展计算节点 复制链接链接已复制到粘贴板!
如果您还没有为机器池启用自动扩展,您可以手动扩展池中计算(也称为 worker)节点的数量来满足部署需求。
您必须单独扩展每个机器池。
先决条件
-
您已在工作站上安装和配置了最新的 ROSA 命令行界面(CLI) (
rosa
)。 - 使用 ROSA CLI 登录您的红帽帐户。
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 您有一个现有的机器池。
流程
列出集群中的机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES DISK SIZE SG IDs default No 2 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2 mp1 No 2 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES DISK SIZE SG IDs default No 2 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2 mp1 No 2 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 增加或减少机器池中的计算节点副本数量:
rosa edit machinepool --cluster=<cluster_name> \ --replicas=<replica_count> \ <machine_pool_id>
$ rosa edit machinepool --cluster=<cluster_name> \ --replicas=<replica_count> \
1 <machine_pool_id>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出集群中可用的机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES DISK SIZE SG IDs default No 2 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2 mp1 No 3 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES DISK SIZE SG IDs default No 2 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2 mp1 No 3 m5.xlarge us-east-1a 300GiB sg-0e375ff0ec4a6cfa2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在上一命令的输出中,验证机器池的计算节点副本数是否如预期。在示例输出中,
mp1
机器池的计算节点副本数已扩展到 3。
4.2.5. 节点标签 复制链接链接已复制到粘贴板!
标签是应用于 Node
对象的键值对。您可以使用标签来组织一组对象,并控制 pod 的调度。
您可以在集群创建过程中或之后添加标签。标签可以随时修改或更新。
4.2.5.1. 在机器池中添加节点标签 复制链接链接已复制到粘贴板!
随时为计算(也称为 worker)节点添加或编辑标签,以便以与您的相关方式管理节点。例如,您可以将工作负载的类型分配给特定的节点。
标签以一个键值对的形式进行分配。对于其分配到的对象,每个键需要是唯一的。
先决条件
-
您已在工作站上安装和配置了最新的 ROSA 命令行界面(CLI) (
rosa
)。 - 使用 ROSA CLI 登录您的红帽帐户。
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 您有一个现有的机器池。
流程
列出集群中的机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为机器池添加或更新节点标签:
要为不使用自动扩展的机器池添加或更新节点标签,请运行以下命令:
rosa edit machinepool --cluster=<cluster_name> \ --labels=<key>=<value>,<key>=<value> \ <machine_pool_id>
$ rosa edit machinepool --cluster=<cluster_name> \ --labels=<key>=<value>,<key>=<value> \
1 <machine_pool_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<key>=<value>,<key>=<value>
替换为以逗号分隔的键-值对,例如--labels=key1=value1,key2=value2
。此列表会持续覆盖对节点标签所做的任何修改。
以下示例将标签添加到
db-nodes-mp
机器池:rosa edit machinepool --cluster=mycluster --replicas=2 --labels=app=db,tier=backend db-nodes-mp
$ rosa edit machinepool --cluster=mycluster --replicas=2 --labels=app=db,tier=backend db-nodes-mp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'
I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用新标签描述机器池的详情:
rosa describe machinepool --cluster=<cluster_name> --machinepool=<machine-pool-name>
$ rosa describe machinepool --cluster=<cluster_name> --machinepool=<machine-pool-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证您的机器池在输出中是否包含这些标签。
4.2.6. 为机器池添加标签 复制链接链接已复制到粘贴板!
您可以在机器池中为计算节点(也称为 worker 节点)添加标签,以引入在置备机器池时生成的 AWS 资源的自定义用户标签,请注意您在创建机器池后您无法编辑标签。
4.2.6.1. 使用 ROSA CLI 向机器池添加标签 复制链接链接已复制到粘贴板!
您可以使用 ROSA 命令行界面(CLI) (rosa
)为 Red Hat OpenShift Service on AWS 集群添加标签。创建机器池后,您无法编辑标签。
您必须确保您的标签键不是 aws
、red-hat-managed
、red-hat-clustertype
或 Name
。另外,不得设置以 kubernetes.io/cluster/
开头的标签键。您的标签的密钥不能超过 128 个字符,而您的标签的值不能超过 256 个字符。红帽保留以后添加其他保留标签的权利。
先决条件
-
在您的工作站上安装和配置了最新的 AWS (
aws
)、ROSA (rosa
) 和 OpenShift (oc
) CLI。 - 使用 ROSA CLI 登录您的红帽帐户。
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
流程
运行以下命令,创建带有自定义标签的机器池:
rosa create machinepools --cluster=<name> --replicas=<replica_count> \ --name <mp_name> --tags='<key> <value>,<key> <value>'
$ rosa create machinepools --cluster=<name> --replicas=<replica_count> \ --name <mp_name> --tags='<key> <value>,<key> <value>'
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<key> <value>,<key>
; <value> 替换为每个标签的键和值。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用
describe
命令查看带有标签的机器池的详情,并验证输出中是否包含您的机器池的标签:rosa describe machinepool --cluster=<cluster_name> --machinepool=<machinepool_name>
$ rosa describe machinepool --cluster=<cluster_name> --machinepool=<machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.7. 为机器池添加污点 复制链接链接已复制到粘贴板!
您可以为机器池中的计算(也称为 worker)节点添加污点,以控制哪些 pod 调度到它们。将污点应用到机器池时,调度程序无法将 pod 放置到池中节点上,除非 pod 规格包含污点的容限。污点可以使用 Red Hat OpenShift Cluster Manager 或 ROSA 命令行界面(CLI) (rosa
)添加到机器池中。
集群必须至少有一个不包含任何污点的机器池。
4.2.7.1. 使用 OpenShift Cluster Manager 为机器池添加污点 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift Cluster Manager 为 Red Hat OpenShift Service on AWS 集群添加污点。
先决条件
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 您有一个机器池,它不包含任何污点,至少包含两个实例。
流程
- 进入到 OpenShift Cluster Manager 并选择您的集群。
-
在 Machine pool 选项卡中,点您要向其添加污点的机器池的 Options 菜单
。
- 选择 Edit taint。
- 为您的污点添加 Key 和 Value 条目。
-
从列表中选择污点的 Effect。可用选项包括
NoSchedule
、PreferNoSchedule
和NoExecute
。 - 可选:如果要向机器池添加更多污点,请选择 Add taint。
- 点 Save 将污点应用到机器池。
验证
- 在 Machine pool 选项卡中,选择机器池旁边的 > 来扩展视图。
- 验证您的污点是否在展开的视图中的 Taints 下列出。
4.2.7.2. 使用 ROSA CLI 为机器池添加污点 复制链接链接已复制到粘贴板!
您可以使用 ROSA 命令行界面(CLI) (CLI)为 Red Hat OpenShift Service on AWS 集群添加污点。
对于 rosa
版本 1.2.25 及更早的版本的用户,在与集群创建的机器池(ID=Default
)中无法更改污点数量。对于 rosa
版本 1.2.26 及更高版本的用户,可以在与集群创建的机器池(ID=worker
)内更改污点数量。必须至少有一个没有污点的机器池,且至少有两个副本。
先决条件
-
在您的工作站上安装和配置了最新的 AWS (
aws
)、ROSA (rosa
) 和 OpenShift (oc
) CLI。 -
使用
rosa
CLI 登录您的红帽帐户。 - 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 您有一个机器池,它不包含任何污点,至少包含两个实例。
流程
运行以下命令列出集群中的机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为机器池添加或更新污点:
要为不使用自动扩展的机器池添加或更新污点,请运行以下命令:
rosa edit machinepool --cluster=<cluster_name> \ --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ <machine_pool_id>
$ rosa edit machinepool --cluster=<cluster_name> \ --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \
1 <machine_pool_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用每个污点的实际的 key, value, 和 effect 替换 Replace
<key>=<value>:<effect>,<key>=<value>:<effect>
,例如--taints=key1=value1:NoSchedule,key2=value2:NoExecute
。可用效果包括NoSchedule
、PreferNoSchedule
和NoExecute
。此列表会持续覆盖对节点污点所做的任何修改。
以下示例将污点添加到
db-nodes-mp
机器池:rosa edit machinepool --cluster=mycluster --replicas 2 --taints=key1=value1:NoSchedule,key2=value2:NoExecute db-nodes-mp
$ rosa edit machinepool --cluster=mycluster --replicas 2 --taints=key1=value1:NoSchedule,key2=value2:NoExecute db-nodes-mp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'
I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
描述带有新污点的机器池详情:
rosa describe machinepool --cluster=<cluster_name> --machinepool=<machinepool_name>
$ rosa describe machinepool --cluster=<cluster_name> --machinepool=<machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证您的机器池是否包含在输出中。
4.2.8. 配置机器池 AutoRepair 复制链接链接已复制到粘贴板!
Red Hat OpenShift Service on AWS 支持自动修复机器池,称为 AutoRepair。当您希望 Red Hat OpenShift Service on AWS 服务检测到某些不健康节点时,自动修复很有用,排空不健康的节点,并重新创建节点。如果不应替换不健康的节点,您可以禁用 AutoRepair,例如在节点被保留的情况下。在机器池中默认启用 AutoRepair。
当节点的状态为 NotReady
或处于未知状态(通常为 8 分钟)时,自动修复过程会取消节点不健康。每当两个或多个节点同时变为不健康时,自动修复过程将停止修复节点。同样,当新节点创建不健康时,即使在预定义的时间(通常为 20 分钟)后,该服务会自动修复。
机器池 AutoRepair 仅适用于 Red Hat OpenShift Service on AWS 集群。
4.2.8.1. 使用 OpenShift Cluster Manager 在机器池上配置 AutoRepair 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift Cluster Manager 为 Red Hat OpenShift Service on AWS 集群配置机器池 AutoRepair。
先决条件
- 您创建了带有 HCP 集群的 ROSA。
- 您有一个现有的机器池。
流程
- 进入到 OpenShift Cluster Manager 并选择您的集群。
-
在 Machine pool 选项卡中,点您要为其配置自动修复的机器池的 Options 菜单
。
- 从菜单中,选择 Edit。
- 从显示的 Edit Machine Pool 对话框中,找到 AutoRepair 选项。
- 选择或清除 AutoRepair 旁边的框以启用或禁用。
- 点 Save 将更改应用到机器池。
验证
- 在 Machine pool 选项卡中,选择机器池旁边的 > 来扩展视图。
- 验证您的机器池在展开视图中是否有正确的 AutoRepair 设置。
4.2.8.2. 使用 ROSA CLI 配置机器池 AutoRepair 复制链接链接已复制到粘贴板!
您可以使用 ROSA 命令行界面(CLI) (rosa
)为 Red Hat OpenShift Service on AWS 集群配置机器池 AutoRepair。
先决条件
-
您已在工作站上安装和配置了最新的 AWS (
aws
)和 ROSA (rosa
) CLI。 -
使用
rosa
CLI 登录您的红帽帐户。 - 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 您有一个现有的机器池。
流程
运行以下命令列出集群中的机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-0df2ec3377847164f 4.16.6 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在机器池中启用或禁用 AutoRepair:
要为机器池禁用 AutoRepair,请运行以下命令:
rosa edit machinepool --cluster=mycluster --machinepool=<machinepool_name> --autorepair=false
$ rosa edit machinepool --cluster=mycluster --machinepool=<machinepool_name> --autorepair=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为机器池启用 AutoRepair,请运行以下命令:
rosa edit machinepool --cluster=mycluster --machinepool=<machinepool_name> --autorepair=true
$ rosa edit machinepool --cluster=mycluster --machinepool=<machinepool_name> --autorepair=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
I: Updated machine pool 'machinepool_name' on cluster 'mycluster'
I: Updated machine pool 'machinepool_name' on cluster 'mycluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
描述机器池的详情:
rosa describe machinepool --cluster=<cluster_name> --machinepool=<machinepool_name>
$ rosa describe machinepool --cluster=<cluster_name> --machinepool=<machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证输出中机器池的 AutoRepair 设置是否正确。
4.2.9. 在机器池中添加节点调整 复制链接链接已复制到粘贴板!
您可以为机器池中的计算(也称为 worker 节点)添加调整,以控制其在 Red Hat OpenShift Service on AWS 集群上的配置。
先决条件
-
您已在工作站上安装和配置了最新的 ROSA 命令行界面(CLI) (
rosa
)。 - 使用 'rosa' 登录您的红帽帐户。
- 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 您有一个现有的机器池。
- 您有一个现有的调优配置。
流程
列出集群中的所有机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR db-nodes-mp No 0/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes workers No 2/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR db-nodes-mp No 0/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes workers No 2/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以将调优配置添加到现有或新机器池中。
在创建机器池时添加调整:
rosa create machinepool -c <cluster-name> --name <machinepoolname> --tuning-configs <tuning_config_name>
$ rosa create machinepool -c <cluster-name> --name <machinepoolname> --tuning-configs <tuning_config_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
? Tuning configs: sample-tuning I: Machine pool 'db-nodes-mp' created successfully on hosted cluster 'sample-cluster' I: To view all machine pools, run 'rosa list machinepools -c sample-cluster'
? Tuning configs: sample-tuning I: Machine pool 'db-nodes-mp' created successfully on hosted cluster 'sample-cluster' I: To view all machine pools, run 'rosa list machinepools -c sample-cluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为机器池添加或更新调整:
rosa edit machinepool -c <cluster-name> --machinepool <machinepoolname> --tuning-configs <tuning_config_name>
$ rosa edit machinepool -c <cluster-name> --machinepool <machinepoolname> --tuning-configs <tuning_config_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'
I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
描述您添加调优配置的机器池:
rosa describe machinepool --cluster=<cluster_name> --machinepool=<machine_pool_name>
$ rosa describe machinepool --cluster=<cluster_name> --machinepool=<machine_pool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证您的机器池是否包含在输出中调整配置。
4.2.10. 配置节点排空宽限期 复制链接链接已复制到粘贴板!
您可以为集群中的机器池配置节点排空宽限期。机器池的节点排空宽限期是集群在升级或替换机器池时遵守 Pod Disruption Budget 保护的工作负载的时间。在这个宽限期后,所有剩余的工作负载都会被强制被驱除。节点排空宽限期的值范围是从 0
到 1 周
。使用默认值 0
或空值时,机器池会在没有任何时间限制的情况下排空,直到完成为止。
先决条件
-
您已在工作站上安装和配置了最新的 ROSA 命令行界面(CLI) (
rosa
)。 - 您在 AWS 集群上创建了 Red Hat OpenShift Service。
- 您有一个现有的机器池。
流程
运行以下命令,列出集群中的所有机器池:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes workers No 2/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR db-nodes-mp No 2/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes workers No 2/2 m5.xlarge us-east-2a subnet-08d4d81def67847b6 4.14.34 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查机器池的节点排空宽限期:
rosa describe machinepool --cluster <cluster_name> --machinepool=<machinepool_name>
$ rosa describe machinepool --cluster <cluster_name> --machinepool=<machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID: workers Cluster ID: 2a90jdl0i4p9r9k9956v5ocv40se1kqs ... Node drain grace period: ...
ID: workers Cluster ID: 2a90jdl0i4p9r9k9956v5ocv40se1kqs ... Node drain grace period:
1 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果这个值为空,机器池会在没有时间限制的情况下排空,直到完成为止。
可选:运行以下命令来更新机器池的节点排空宽限期:
rosa edit machinepool --node-drain-grace-period="<node_drain_grace_period_value>" --cluster=<cluster_name> <machinepool_name>
$ rosa edit machinepool --node-drain-grace-period="<node_drain_grace_period_value>" --cluster=<cluster_name> <machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在机器池升级过程中更改节点排空宽限期适用于将来的升级,而不是进行中升级。
验证
运行以下命令,检查机器池的节点排空宽限期:
rosa describe machinepool --cluster <cluster_name> <machinepool_name>
$ rosa describe machinepool --cluster <cluster_name> <machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID: workers Cluster ID: 2a90jdl0i4p9r9k9956v5ocv40se1kqs ... Node drain grace period: 30 minutes ...
ID: workers Cluster ID: 2a90jdl0i4p9r9k9956v5ocv40se1kqs ... Node drain grace period: 30 minutes ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在输出中验证您的机器池的正确
节点排空宽限期
。
4.2.11. 其他资源 复制链接链接已复制到粘贴板!
4.3. 关于集群中的自动扩展节点 复制链接链接已复制到粘贴板!
自动缩放器选项可以配置为自动扩展机器池中的机器数量。
当由于资源不足而无法在任何当前节点上调度 pod 时,或者在需要另一个节点来满足部署需求时,集群自动扩展会增加机器池的大小。集群自动扩展不会将集群资源增加到超过您指定的限制。
另外,如果相当长的一段时间内都不需要某些节点,例如集群资源使用率较低并且所有重要 pod 都可以安置在其他节点上时,集群自动扩展会减小机器池的大小。
启用自动扩展时,还必须设置 worker 节点的最小和最大数量。
只有集群所有者和机构管理员才可以扩展或删除集群。
4.3.1. 在集群中启用自动扩展节点 复制链接链接已复制到粘贴板!
您可以通过编辑现有集群的机器池定义,在 worker 节点上启用自动扩展来增加或减少可用节点的数量。
使用 Red Hat OpenShift Cluster Manager 在现有集群中启用自动扩展节点
从 OpenShift Cluster Manager 控制台,为机器池定义中启用 worker 节点的自动扩展。
流程
- 在 OpenShift Cluster Manager 中,导航到 Cluster List 页面,再选择您要为其启用自动扩展的集群。
- 在所选集群中,选择 Machine pool 选项卡。
-
点击您要为其启用自动扩展的机器池末尾的 Options 菜单
,然后选择 Edit。
- 在 Edit machine pool 对话框中,选中 Enable autoscaling 复选框。
- 选择 Save 保存这些更改并为机器池启用自动扩展。
使用 ROSA CLI 在现有集群中启用自动扩展节点
配置自动扩展,以根据负载动态扩展 worker 节点的数量。
成功自动扩展取决于您的 AWS 帐户中的正确的 AWS 资源配额。验证来自 AWS 控制台的资源配额和请求配额的增加。
流程
要识别集群中的机器池 ID,请输入以下命令:
rosa list machinepools --cluster=<cluster_name>
$ rosa list machinepools --cluster=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-03c2998b482bf3b20 4.16.6 Yes mp1 No 2/2 m5.xlarge us-east-2a subnet-03c2998b482bf3b20 4.16.6 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-2a subnet-03c2998b482bf3b20 4.16.6 Yes mp1 No 2/2 m5.xlarge us-east-2a subnet-03c2998b482bf3b20 4.16.6 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 获取您要配置的机器池的 ID。
要在机器池上启用自动扩展,请输入以下命令:
rosa edit machinepool --cluster=<cluster_name> <machinepool_ID> --enable-autoscaling --min-replicas=<number> --max-replicas=<number>
$ rosa edit machinepool --cluster=<cluster_name> <machinepool_ID> --enable-autoscaling --min-replicas=<number> --max-replicas=<number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
在名为
mycluster
的集群上 ID 为mp1
的机器池上启用自动扩展,其副本数为 2 到 5 个 worker 节点:rosa edit machinepool --cluster=mycluster mp1 --enable-autoscaling --min-replicas=2 --max-replicas=5
$ rosa edit machinepool --cluster=mycluster mp1 --enable-autoscaling --min-replicas=2 --max-replicas=5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. 禁用集群中的自动扩展节点 复制链接链接已复制到粘贴板!
您可以通过编辑现有集群的机器池定义,在 worker 节点上禁用自动扩展来增加或减少可用节点的数量。
您可以使用 Red Hat OpenShift Cluster Manager 或 ROSA 命令行界面(CLI) (rosa
)禁用集群中的自动扩展。
使用 Red Hat OpenShift Cluster Manager 禁用现有集群中的自动扩展节点
从 OpenShift Cluster Manager 禁用机器池定义中的 worker 节点的自动扩展。
流程
- 在 OpenShift Cluster Manager 中,导航到 Cluster List 页面,再选择必须禁用自动扩展的集群。
- 在所选集群中,选择 Machine pool 选项卡。
-
点带有自动扩展的机器池末尾的 Options 菜单
,然后选择 Edit。
- 在 Edit machine pool 对话框中,取消选择 Enable autoscaling 复选框。
- 选择 Save 以保存这些更改并从机器池禁用自动扩展。
使用 ROSA CLI 禁用现有集群中的自动扩展节点
使用 ROSA 命令行界面(CLI) (CLI)禁用机器池定义中 worker节点的自动扩展
。
流程
输入以下命令:
rosa edit machinepool --cluster=<cluster_name> <machinepool_ID> --enable-autoscaling=false --replicas=<number>
$ rosa edit machinepool --cluster=<cluster_name> <machinepool_ID> --enable-autoscaling=false --replicas=<number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
在名为
mycluster
的集群上,禁用default
机器池上的自动扩展。rosa edit machinepool --cluster=mycluster default --enable-autoscaling=false --replicas=3
$ rosa edit machinepool --cluster=mycluster default --enable-autoscaling=false --replicas=3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 其他资源 复制链接链接已复制到粘贴板!
4.4. 配置集群内存以满足容器内存和风险要求 复制链接链接已复制到粘贴板!
作为集群管理员,您可以通过以下方式管理应用程序内存,从而帮助集群有效运作:
- 确定容器化应用程序组件的内存和风险要求,并配置容器内存参数以满足这些要求。
- 配置容器化应用程序运行时(如 OpenJDK),以最佳的方式遵守配置的容器内存参数。
- 诊断并解决与在容器中运行相关的内存错误情况。
4.4.1. 了解管理应用程序内存 复制链接链接已复制到粘贴板!
在继续操作前,建议您先阅读有关 Red Hat OpenShift Service on AWS 如何管理计算资源的概述。
对于每种资源(内存、CPU、存储),Red Hat OpenShift Service on AWS 允许将可选 请求和限制值 放在 pod 中的每个容器上。
注意以下关于内存请求和内存限制的信息:
内存请求
- 如果指定,内存请求值会影响 Red Hat OpenShift Service on AWS 调度程序。将容器调度到节点时,调度程序会考虑内存请求,然后在所选节点上隔离出请求的内存供该容器使用。
- 如果节点的内存用尽,Red Hat OpenShift Service on AWS 会优先驱除其内存用量最多超过其内存请求的容器。在严重的内存耗尽情形中,节点 OOM 终止程序可以根据类似的指标选择并终止容器中的一个进程。
- 集群管理员可以分配配额,或者分配内存请求值的默认值。
- 集群管理员可以覆盖开发人员指定的内存请求值,以便管理集群过量使用。
内存限制
- 如果指定,内存限制值针对可在容器中所有进程间分配的内存提供硬性限制。
- 如果分配给容器中所有进程的内存超过内存限制,则节点超出内存(OOM)终止程序将立即选择并终止容器中的一个进程。
- 如果同时指定了内存请求和限制,则内存限制必须大于或等于内存请求量。
- 集群管理员可以分配配额,或者分配内存限制值的默认值。
-
最小内存限值为 12MB。如果容器因为一个
Cannot allocate memory
pod 事件启动失败,这代表内存限制太低。增加或删除内存限制。删除限制可让 pod 消耗无限的节点资源。
4.4.1.1. 管理应用程序内存策略 复制链接链接已复制到粘贴板!
在 Red Hat OpenShift Service on AWS 上调整应用程序内存大小的步骤如下:
确定预期的容器内存用量
从经验判断(例如,通过独立的负载测试),根据需要确定容器内存用量的预期平均值和峰值。需要考虑容器中有可能并行运行的所有进程:例如,主应用程序是否生成任何辅助脚本?
确定风险嗜好
确定用于驱除的风险嗜好。如果风险嗜好较低,则容器应根据预期的峰值用量加上一个安全裕度百分比来请求内存。如果风险嗜好较高,那么根据预期的平均用量请求内存可能更为妥当。
设定容器内存请求
根据以上所述设定容器内存请求。请求越能准确表示应用程序内存用量越好。如果请求过高,集群和配额用量效率低下。如果请求过低,应用程序驱除的几率就会提高。
根据需要设定容器内存限制
在必要时,设定容器内存限制。如果容器中所有进程的总内存用量超过限制,那么设置限制会立即终止容器进程,所以这既有利也有弊。一方面,可能会导致过早出现意料之外的过量内存使用(“快速失败”);另一方面,也会突然终止进程。
请注意,一些 Red Hat OpenShift Service on AWS 集群可能需要设置限制值;有些应用程序镜像可能会根据限制覆盖请求;有些应用程序镜像依赖于设置的限制,因为这比请求值更容易检测。
如果设置内存限制,其大小不应小于预期峰值容器内存用量加上安全裕度百分比。
确保应用程序经过性能优化
在适当时,确保应用程序已根据配置的请求和限制进行了性能优化。对于池化内存的应用程序(如 JVM),这一步尤为相关。本页的其余部分将介绍这方面的内容。
4.4.2. 了解 Red Hat OpenShift Service on AWS 的 OpenJDK 设置 复制链接链接已复制到粘贴板!
默认的 OpenJDK 设置在容器化环境中效果不佳。因此在容器中运行 OpenJDK 时,务必要提供一些额外的 Java 内存设置。
JVM 内存布局比较复杂,并且视版本而异,因此本文不做详细讨论。但作为在容器中运行 OpenJDK 的起点,至少以下三个于内存相关的任务非常重要:
- 覆盖 JVM 最大堆大小。
- 在可能的情况下,促使 JVM 向操作系统释放未使用的内存。
- 确保正确配置了容器中的所有 JVM 进程。
优化容器中运行的 JVM 工作负载已超出本文讨论范畴,并且可能涉及设置多个额外的 JVM 选项。
4.4.2.1. 了解如何覆盖 JVM 最大堆大小 复制链接链接已复制到粘贴板!
对于"堆"内存,OpenJDK 默认为使用最多 25% 的可用内存(识别任何容器内存限值)。这个默认值比较保守,在正确配置的容器环境中,这个值会导致分配给容器的内存的 75% 没有被使用。JVM 用于堆内存的百分比较高(如 80%)更适合容器上下文中,对容器级别实施内存限制。
大多数红帽容器包含一个启动脚本,可在 JVM 启动时设置更新的值来替换 OpenJDK 默认。
例如,红帽构建的 OpenJDK 容器的默认值为 80%。通过定义 JAVA_MAX_RAM_RATIO
环境变量,可以将这个值设置为不同的百分比。
对于其他 OpenJDK 部署,可以使用以下命令更改默认值 25%:
Example
java -XX:MaxRAMPercentage=80.0
$ java -XX:MaxRAMPercentage=80.0
4.4.2.2. 了解如何促使 JVM 向操作系统释放未用的内存 复制链接链接已复制到粘贴板!
默认情况下,OpenJDK 不会主动向操作系统退还未用的内存。这可能适合许多容器化的 Java 工作负载,但也有明显的例外,例如额外活跃进程与容器内 JVM 共存的工作负载,这些额外进程是原生或附加的 JVM,或者这两者的组合。
基于 Java 的代理可使用以下 JVM 参数来鼓励 JVM 向操作系统释放未使用的内存:
-XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90
-XX:+UseParallelGC
-XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4
-XX:AdaptiveSizePolicyWeight=90
这些参数旨在当分配的内存超过 110% 使用中内存时 (-XX:MaxHeapFreeRatio
) 将堆内存返还给操作系统,这将在垃圾回收器上最多花费 20% 的 CPU 时间 (-XX:GCTimeRatio
)。应用程序堆分配一定不会小于初始堆分配(被 -XX:InitialHeapSize / -
Xms
覆盖)。调节 Java 在 OpenShift 中的内存占用(第 1 部分)、调节 Java 在 OpenShift 中的内存占用(第 2 部分)以及 OpenJDK 和容器提供了其他的详细信息。
4.4.2.3. 了解如何确保正确配置容器中的所有 JVM 进程 复制链接链接已复制到粘贴板!
如果多个 JVM 在同一容器中运行,则必须保证它们的配置都正确无误。如果有许多工作负载,需要为每个 JVM 分配一个内存预算百分比,留出较大的额外安全裕度。
许多 Java 工具使用不同的环境变量(JAVA_OPTS
、GRADLE_OPTS
等)来配置其 JVM,并确保将正确的设置传递给正确的 JVM。
OpenJDK 始终尊重 JAVA_TOOL_OPTIONS
环境变量,在 JAVA_TOOL_OPTIONS
中指定的值会被 JVM 命令行中指定的其他选项覆盖。默认情况下,为了确保这些选项默认用于基于 Java 的代理镜像中运行的所有 JVM 工作负载,Red Hat OpenShift Service on AWS Jenkins Maven 代理镜像会设置以下变量:
JAVA_TOOL_OPTIONS="-Dsun.zip.disableMemoryMapping=true"
JAVA_TOOL_OPTIONS="-Dsun.zip.disableMemoryMapping=true"
这不能保证不需要额外选项,只是用作一个实用的起点。
4.4.3. 从 pod 中查找内存请求和限制 复制链接链接已复制到粘贴板!
希望从 pod 中动态发现内存请求和限制的应用程序应该使用 Downward API。
流程
配置 pod,以添加
MEMORY_REQUEST
和MEMORY_LIMIT
小节:
验证
使用远程 shell 访问 pod:
oc rsh test
$ oc rsh test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查是否应用了请求的值:
env | grep MEMORY | sort
$ env | grep MEMORY | sort
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
MEMORY_LIMIT=536870912 MEMORY_REQUEST=402653184
MEMORY_LIMIT=536870912 MEMORY_REQUEST=402653184
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
内存限制值也可由 /sys/fs/cgroup/memory/memory.limit_in_bytes
文件从容器内部读取。
4.4.4. 了解 OOM 终止策略 复制链接链接已复制到粘贴板!
如果容器中所有进程的总内存用量超过内存限制,或者在严重的节点内存耗尽情形下,Red Hat OpenShift Service on AWS 可以终止容器中的进程。
当进程超出内存(OOM)终止时,这可能会导致容器立即退出。如果容器 PID 1 进程收到 SIGKILL,则容器会立即退出。否则,容器行为将取决于其他进程的行为。
例如,某个容器进程以代码 137 退出,这表示它收到了 SIGKILL 信号。
如果容器没有立即退出,则能够检测到 OOM 终止,如下所示:
使用远程 shell 访问 pod:
oc rsh <pod name>
# oc rsh <pod name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看
/sys/fs/cgroup/memory/memory.oom_control
中的当前 OOM 终止计数:grep '^oom_kill ' /sys/fs/cgroup/memory/memory.oom_control
$ grep '^oom_kill ' /sys/fs/cgroup/memory/memory.oom_control
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
oom_kill 0
oom_kill 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来引发一个 OOM kill:
sed -e '' </dev/zero
$ sed -e '' </dev/zero
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Killed
Killed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看
/sys/fs/cgroup/memory/memory.oom_control
中的 OOM 终止计数器:grep '^oom_kill ' /sys/fs/cgroup/memory/memory.oom_control
$ grep '^oom_kill ' /sys/fs/cgroup/memory/memory.oom_control
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
oom_kill 1
oom_kill 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 pod 中的一个或多个进程遭遇 OOM 终止,那么当 pod 随后退出时(不论是否立即发生),它都将会具有原因为 OOMKilled 的 Failed 阶段。被 OOM 终止的 pod 可能会根据
restartPolicy
的值重启。如果不重启,复制控制器等控制器会看到 pod 的失败状态,并创建一个新 pod 来替换旧 pod。使用以下命令获取 pod 状态:
oc get pod test
$ oc get pod test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE test 0/1 OOMKilled 0 1m
NAME READY STATUS RESTARTS AGE test 0/1 OOMKilled 0 1m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 pod 没有重启,请运行以下命令来查看 pod:
oc get pod test -o yaml
$ oc get pod test -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果重启,运行以下命令来查看 pod:
oc get pod test -o yaml
$ oc get pod test -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.5. 了解 pod 驱除 复制链接链接已复制到粘贴板!
当节点内存耗尽时,Red Hat OpenShift Service on AWS 可以从其节点驱除 pod。根据内存耗尽的程度,驱除可能是安全操作,但也不一定。安全驱除表示,各个容器的主进程 (PID 1) 收到 SIGTERM 信号,稍等片刻后,如果进程还未退出,则会收到一个 SIGKILL 信号。非安全驱除暗示着各个容器的主进程会立即收到 SIGKILL 信号。
被驱除的 pod 具有 Failed 阶段,原因为 Evicted。无论 restartPolicy
的值是什么,该 pod 都不会重启。但是,复制控制器等控制器会看到 pod 的失败状态,并且创建一个新 pod 来取代旧 pod。
oc get pod test
$ oc get pod test
输出示例
NAME READY STATUS RESTARTS AGE test 0/1 Evicted 0 1m
NAME READY STATUS RESTARTS AGE
test 0/1 Evicted 0 1m
oc get pod test -o yaml
$ oc get pod test -o yaml
输出示例
... status: message: 'Pod The node was low on resource: [MemoryPressure].' phase: Failed reason: Evicted
...
status:
message: 'Pod The node was low on resource: [MemoryPressure].'
phase: Failed
reason: Evicted
第 5 章 配置 PID 限制 复制链接链接已复制到粘贴板!
进程标识符(PID)是由 Linux 内核分配给系统中当前运行的每个进程或线程的唯一标识符。在 Linux 内核中限制了可以在系统中同时运行的进程数量为 4,194,304。这个数字也可能会受到限制访问其他系统资源(如内存、CPU 和磁盘空间)的影响。
在 Red Hat OpenShift Service on AWS 4.11 及更高版本中,pod 最多可以有 4,096 个 PID。如果您的工作负载需要超过这一要求,您可以通过配置 KubeletConfig
对象来增加允许的最大 PID 数量。
在早于 4.11 的运行版本的 Red Hat OpenShift Service on AWS 集群使用默认的 PID 限制 1024
。
5.1. 了解进程 ID 限制 复制链接链接已复制到粘贴板!
在 Red Hat OpenShift Service on AWS 中,在调度在集群中工作前,考虑这两个支持的用于进程 ID (PID)的限制:
每个 pod 的最大 PID 数量。
默认值为 Red Hat OpenShift Service on AWS 4.11 及之后的版本中的 4,096。这个值由节点上设置的
podPidsLimit
参数控制。每个节点的最大 PID 数量。
默认值取决于 节点资源。在 Red Hat OpenShift Service on AWS 中,这个值由
-system-reserved
参数控制,该参数会根据节点的总资源在每个节点中保留 PID。
当 pod 超过每个 pod 允许的最大 PID 数量时,pod 可能会无法正常工作,并可能会从节点中驱除。如需更多信息,请参阅 Kubernetes 文档中的驱除信号和阈值。
当节点超过每个节点允许的最大 PID 数量时,节点可能会变得不稳定,因为新进程无法分配 PID。如果在不创建额外的进程的情况下现有进程无法完成,则整个节点可能会不可用,需要重启。这种情况可能会导致数据丢失,具体取决于正在运行的进程和应用程序。达到这个阈值时,客户管理员和红帽站点可靠性工程团队会获得通知,在集群日志中会出现 Worker node is experiencing PIDPressure
警告。
pod 的 podPidsLimit
参数控制可在该 pod 中同时运行的最大进程和线程数。
您可以将 podPidsLimit
的值从默认值 4,096 增加到最多 16,384。更改这个值可能会导致应用程序停机,因为更改 podPidsLimit
需要重新引导受影响的节点。
如果您每个节点运行大量 pod,且节点上有高 podPidsLimit
值,则风险超过节点的最大 PID。
要查找您可以在单一节点上运行的最大 pod 数量,而不超过节点的 PID 最大,请将 3,650,000 除以 podPidsLimit
的值。例如,如果您的 podPidsLimit
值是 16,384,并且您希望使用的 pod 数量与进程 ID 数接近,您可以在单个节点上安全地运行 222 个 pod。
即使 podPidsLimit
值被正确设置,内存、CPU 和可用存储也可能会限制可以同时运行的 pod 的最大数量。如需更多信息,请参阅"规划您的环境"和"Limits and scalability"。
您可以通过创建或编辑更改 the-pod- pids-limit 参数的
。
KubeletConfig
对象,为现有 Red Hat OpenShift Service on AWS 集群中的机器池设置更高的 pod
PidsLimit
在现有机器池中更改 podPidsLimit
会触发机器池中的节点一次重新引导。对于机器池中的工作负载,在峰值使用小时外进行这个变化,并避免升级或休眠集群,直到所有节点重启为止。
先决条件
- 在 AWS 集群上有一个 Red Hat OpenShift Service。
-
已安装 ROSA 命令行界面(CLI) (
rosa
)。 - 已使用 ROSA CLI 登录您的红帽帐户。
流程
为集群创建新
KubeletConfig
对象,用于指定 new-pod-pids-limit
:rosa create kubeletconfig -c <cluster_name> --name=<kubeletconfig_name> --pod-pids-limit=<value>
$ rosa create kubeletconfig -c <cluster_name> --name=<kubeletconfig_name> --pod-pids-limit=<value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,以下命令为
my-cluster
集群创建一个set-high-pids
KubeletConfig
对象,用于为每个 pod 设置最多 16,384 PID:rosa create kubeletconfig -c my-cluster --name=set-high-pids --pod-pids-limit=16384
$ rosa create kubeletconfig -c my-cluster --name=set-high-pids --pod-pids-limit=16384
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新的
KubeletConfig
对象与新的或现有机器池关联。对于新机器池:
rosa create machinepool -c <cluster_name> --name <machinepool_name> --kubelet-configs=<kubeletconfig_name>
$ rosa create machinepool -c <cluster_name> --name <machinepool_name> --kubelet-configs=<kubeletconfig_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于现有机器池:
rosa edit machinepool -c <cluster_name> --kubelet-configs=<kubeletconfig_name> <machinepool_name>
$ rosa edit machinepool -c <cluster_name> --kubelet-configs=<kubeletconfig_name> <machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Editing the kubelet config will cause the Nodes for your Machine Pool to be recreated. This may cause outages to your applications. Do you wish to continue? (y/N)
Editing the kubelet config will cause the Nodes for your Machine Pool to be recreated. This may cause outages to your applications. Do you wish to continue? (y/N)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
例如,以下命令将
set-high-pids
KubeletConfig
对象与my-cluster
集群中的high-pid-pool
机器池关联:rosa edit machinepool -c my-cluster --kubelet-configs=set-high-pids high-pid-pool
$ rosa edit machinepool -c my-cluster --kubelet-configs=set-high-pids high-pid-pool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当新的
KubeletConfig
对象添加到现有机器池时,会触发 worker 节点的滚动重启。您可以在机器池描述中检查推出部署的进度:rosa describe machinepool --cluster <cluster_name> --machinepool <machinepool_name>
$ rosa describe machinepool --cluster <cluster_name> --machinepool <machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
确认新设置已放置到机器池的节点:
rosa describe kubeletconfig --cluster=<cluster_name> --name <kubeletconfig_name>
$ rosa describe kubeletconfig --cluster=<cluster_name> --name <kubeletconfig_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新的 PID 限制会出现在输出中,如下例所示:
输出示例
Pod Pids Limit: 16384
Pod Pids Limit: 16384
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 从机器池中删除自定义配置 复制链接链接已复制到粘贴板!
您可以通过删除包含配置详情的 KubeletConfig
对象来删除机器池上的自定义配置。
先决条件
- 在 AWS 集群上已有 Red Hat OpenShift Service。
- 已安装 ROSA CLI (rosa)。
- 已使用 ROSA CLI 登录您的红帽帐户。
流程
编辑机器池并设置--
kubeletconfigs
参数,以便忽略您要删除的KubeletConfig
对象。要从机器池中删除所有
KubeletConfig
对象,请为--kubeletconfigs 参数设置
空值,例如:rosa edit machinepool -c <cluster_name> --kubelet-configs="" <machinepool_name>
$ rosa edit machinepool -c <cluster_name> --kubelet-configs="" <machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
确认您删除的
KubeletConfig
对象在机器池描述中不可见:rosa describe machinepool --cluster <cluster_name> --machinepool=<machinepool_name>
$ rosa describe machinepool --cluster <cluster_name> --machinepool=<machinepool_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 使用多架构计算机器管理集群 复制链接链接已复制到粘贴板!
管理具有多个架构的节点的集群要求您在监控集群并管理工作负载时考虑节点架构。这要求您在多架构集群中调度工作负载时考虑额外的注意事项。
6.1. 使用多架构计算机器在集群中调度工作负载 复制链接链接已复制到粘贴板!
当您使用使用不同的架构的计算节点在集群中部署工作负载时,您必须将 pod 架构与底层节点的架构保持一致。根据您的底层节点架构,您的工作负载可能还需要对特定资源进行额外的配置。
您可以使用 Multiarch Tuning Operator 在带有多架构计算机器的集群中启用对工作负载的架构调度。Multiarch Tuning Operator 根据 pod 在创建时支持的架构在 pod 规格中实施额外的调度程序 predicates。
如需有关 Multiarch Tuning Operator 的信息,请参阅使用 Multiarch Tuning Operator 在多架构集群中管理工作负载。
6.1.1. 多架构节点工作负载部署示例 复制链接链接已复制到粘贴板!
基于架构将工作负载调度到适当的节点的工作方式与基于任何其他节点特性的调度相同。
- 使用
nodeAffinity
来调度具有特定架构的节点 您可以只允许将工作负载调度到其镜像支持的一组节点上,您可以在 pod 模板规格中设置
spec.affinity.nodeAffinity
字段。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定支持的构架。有效值包括
amd64
,arm64
, 或这两个值。
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.