简介
您是否希望降低控制平面的管理成本?您是否希望减轻管理多个控制平面的负担?用于红帽 OpenShift 的托管控制平面(又名 HyperShift)支持在 Amazon Web Services(AWS)中大规模托管 OpenShift 租户集群。对于每个独立 OpenShift 集群,控制平面是在三个计算机节点之间进行调度的。但对于托管控制平面,控制平面就会像任何其他工作负载一样,作为可用工作程序节点上的容器集来调度。这样,您可以创建多个控制平面并在更少的节点上运行,使集群更加经济实惠,同时仍然能够重复使用 OpenShift 租赁原语,如项目和策略等。利用托管控制平面可以降低成本,而利用 Arm 托管控制平面则有可能进一步削减成本。
Arm 托管控制平面可以安装到现有的 64 位 Arm OpenShift 容器平台(OCP)集群环境中,以便您使用 64 位 x86 节点池来快速部署多个 Arm 托管控制平面。这一切均可在 AWS 平台上完成,而且也为利用 Arm 托管控制平面节省成本创造了机会。本文将探讨安装 Arm 托管控制平面所带来的优势和所需的安装步骤。
请注意,此功能的当前支持状态为技术预览(TP),并将在未来的发行版本中提供正式支持。

优势
在标准 OCP 集群上使用 Arm 托管的控制平面可以带来以下额外优势:
- 与同等的 x86 托管控制平面相比,Arm 托管控制平面可以将成本降低约 20%。成本节省的计算基于 m6i.xlarge(基于 x86)与 m6g.xlarge(基于 Arm)的小时成本
- 减少维护工作
- 加强管理和工作负载之间的安全界限
- 在更少节点上运行多个控制平面,使集群更加经济实惠
- 加快控制平面的启动速度
- 提高多集群管理的集中度和简便性
如需有关托管集群优势的更多详细信息,请参阅“托管控制平面概述文档”。
集群准备
OCP 4.13.0 作为 AWS 上的 64 位 Arm OCP 托管集群的底层基础运行。
- 安装多集群引擎 Operator 2.2.4 或更新版本。如需有关安装此 Operator 的说明,请参见此页面。
- 接下来,按照“1.7.1.2 创建 Amazon Web Services S3 存储桶 和 S3 OIDC 机密”下的步骤操作,以设置 AWS S3 存储桶和 S3 OIDC 机密。
在第 1 步后,运行以下命令:
aws s3api put-bucket-ownership-controls --bucket $BUCKET_NAME --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerPreferred}]"
- 接下来,按照“1.7.1.6 启用托管控制平面功能”下的步骤操作,以启用托管控制平面。
- 下载 hypershift cli,具体参见“1.7.1.7 安装托管控制平面 CLI”
演示
以下几个部分将引导您完成下面这些步骤:
- 配置环境变量
- 创建 Arm 托管控制平面和 64 位 x86 客户机集群
- 在现有的 Arm 托管控制平面中添加额外的 64 位 x86 客户机集群
- 删除 Arm 托管控制平面
配置环境变量
首先,设置 HyperShift 命令行工具所需的一些环境变量,以便安装 Arm HyperShift Operator 并创建托管控制平面。这紧接在“1.7.2.3 在 AWS 上部署托管集群”中的第 1 步后。
您可以按照“从红帽 OpenShift 集群管理器拉取机密”中所述来获取镜像。
REGION=us-east-1
AWS_CREDS=~/.aws/credentials
BASE_DOMAIN=my.base.domain.com
PULL_SECRET=~/all-the-pull-secrets.json
BUCKET_NAME=my-s3-bucket
CLUSTER_NAME=my-hypershift-arm-cluster
NODEPOOL_NAME=my-additional-x86-guest-cluster
NODEPOOL_REPLICAS=2
设置 KUBECONFIG 环境变量,使其指向您的 OpenShift 64 位 Arm 管理集群。
$ hypershift % export KUBECONFIG=/Users/user/aws-oc-nightly/auth/kubeconfig
创建 Arm 托管控制平面和 64 位 x86 客户机集群
1) 接下来,创建一个托管控制平面以及一个含有 2 个节点的初始客户机集群,同时覆盖标准发行版镜像以利用多架构发行版镜像,因为管理集群是 64 位 Arm,而托管控制平面客户机集群则是 64 位 x86。这可确保在创建托管集群及其客户机集群时使用正确的引导配置。
这紧接在“1.7.2.3 在 AWS 上部署托管集群”中的第 4 步后。
$ hypershift create cluster aws \
--name $CLUSTER_NAME \
--node-pool-replicas=$NODEPOOL_REPLICAS \
--base-domain $BASE_DOMAIN \
--pull-secret $PULL_SECRET \
--aws-creds $AWS_CREDS \
--region $REGION \
--release-image quay.io/openshift-release-dev/ocp-release:4.13.0-multi
2) 利用 OpenShift 命令行工具来验证是否成功创建了客户机集群。
$ oc get nodepools --namespace clusters
NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE
my-hypershift-arm-cluster-us-east-1a my-hypershift-arm-cluster 2 2 False False 4.13.0
3) 验证是否成功创建了托管控制平面。
$ oc get --namespace clusters hostedclusters
NAME VERSION KUBECONFIG PROGRESS AVAILABLE PROGRESSING MESSAGE
my-hypershift-arm-cluster 4.13.0 my-hypershift-arm-cluster-admin-kubeconfig Completed True False The hosted control plane is available
4) 在成功创建了客户机集群和托管控制平面后,创建一个 KUBECONFIG,以访问新的客户机集群并验证 AWS 计算机是否在客户机集群中。
$ hypershift create kubeconfig > temp_kubeconfig
2023/03/21 11:12:32 selected 1 of 1 hostedclusters for the kubeconfig
2023/03/21 11:12:32 adding clusters/my-hypershift-arm-cluster to kubeconfig
2023/03/21 11:12:32 added clusters-my-hypershift-arm-cluster to kubeconfig
2023/03/21 11:12:32 created kubeconfig with 1 contexts
$ hypershift % export KUBECONFIG=/Users/user/hypershift/temp_kubeconfig
$ hypershift % oc get nodes
NAME STATUS ROLES AGE VERSION
ip-10-0-142-149.ec2.internal Ready worker 10m v1.26.2+06e8c46
ip-10-0-143-86.ec2.internal Ready worker 10m v1.26.2+06e8c46
在现有的 Arm 托管控制平面中添加额外的 64 位 x86 客户机集群
此外,您可以根据需要,利用 HyperShift 命令行工具在托管控制平面中添加其他客户机集群。
$ hypershift create nodepool aws \
--cluster-name $CLUSTER_NAME \
--name $NODEPOOL_NAME \
--node-count=$NODEPOOL_REPLICAS
NodePool my-additional-x86-guest-cluster created
使用 OpenShift 命令行工具命令,验证新客户机集群是否已成功初始化。
$ oc get nodepools --namespace clusters
NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE
my-additional-x86-guest-cluster my-hypershift-arm-cluster 2 2 False False 4.13.0
my-hypershift-arm-cluster-us-east-1a my-hypershift-arm-cluster 2 2 False False 4.13.0
删除 Arm 托管控制平面
要删除 Arm 托管控制平面,请运行以下命令。这紧接在“1.7.2.6 销毁 AWS 上的托管集群”中的第 1 步后。
$ hypershift destroy cluster aws \
--name $CLUSTER_NAME \
--aws-creds $AWS_CREDS
总结
我们演示了安装和验证使用 64 位 x86 租户集群的 Arm 托管控制平面所需的步骤。此外,我们演示了如何使用 HyperShift 命令行工具来安装 Arm HyperShift Operator,创建了一个额外的 64 位 x86 租户集群来利用同一个 Arm 托管控制平面,验证了 64 位 x86 租户集群的创建是否成功,验证了 Arm 托管控制平面的创建是否成功,并且删除了这个 Arm 托管控制平面。
今后的工作
今后的工作将投入到扩展托管控制平面的多架构 CPU 功能上。下一个要添加的功能是支持在 AWS 上创建 64 位 Arm 节点池。借助此功能,您将能够从同一托管控制平面运行 64 位 x86 和 64 位 Arm 节点池(注意:您无法在同一节点池中混用多种 CPU 架构)。
在 AWS 上的 64 位 Arm 节点池之后,未来我们还会将 64 位 Arm 托管控制平面和 64 位 Arm 节点池扩展到其他本地和云提供商。
关于作者
Senior software engineer with over 10 years of industry experience in the full software development cycle. Bryan’s work in Red Hat over the past few years has primarily focused on expanding Arm offerings in Red Hat OpenShift and development on Hosted Control Planes.
产品
工具
试用购买与出售
沟通
关于红帽
我们是世界领先的企业开源解决方案供应商,提供包括 Linux、云、容器和 Kubernetes。我们致力于提供经过安全强化的解决方案,从核心数据中心到网络边缘,让企业能够更轻松地跨平台和环境运营。