订阅内容

简介

您是否希望降低控制平面的管理成本?您是否希望减轻管理多个控制平面的负担?用于红帽 OpenShift 的托管控制平面(又名 HyperShift)支持在 Amazon Web Services(AWS)中大规模托管 OpenShift 租户集群。对于每个独立 OpenShift 集群,控制平面是在三个计算机节点之间进行调度的。但对于托管控制平面,控制平面就会像任何其他工作负载一样,作为可用工作程序节点上的容器集来调度。这样,您可以创建多个控制平面并在更少的节点上运行,使集群更加经济实惠,同时仍然能够重复使用 OpenShift 租赁原语,如项目和策略等。利用托管控制平面可以降低成本,而利用 Arm 托管控制平面则有可能进一步削减成本。

Arm 托管控制平面可以安装到现有的 64 位 Arm OpenShift 容器平台(OCP)集群环境中,以便您使用 64 位 x86 节点池来快速部署多个 Arm 托管控制平面。这一切均可在 AWS 平台上完成,而且也为利用 Arm 托管控制平面节省成本创造了机会。本文将探讨安装 Arm 托管控制平面所带来的优势和所需的安装步骤。

请注意,此功能的当前支持状态为技术预览(TP),并将在未来的发行版本中提供正式支持。

Reduce Costs with ARM Hosted Control Planes on AWS-zh

 

优势

在标准 OCP 集群上使用 Arm 托管的控制平面可以带来以下额外优势:

  • 与同等的 x86 托管控制平面相比,Arm 托管控制平面可以将成本降低约 20%。成本节省的计算基于 m6i.xlarge(基于 x86)与 m6g.xlarge(基于 Arm)的小时成本
  • 减少维护工作
  • 加强管理和工作负载之间的安全界限
  • 在更少节点上运行多个控制平面,使集群更加经济实惠
  • 加快控制平面的启动速度
  • 提高多集群管理的集中度和简便性

如需有关托管集群优势的更多详细信息,请参阅“托管控制平面概述文档”。

集群准备

OCP 4.13.0 作为 AWS 上的 64 位 Arm OCP 托管集群的底层基础运行。

  1. 安装多集群引擎 Operator 2.2.4 或更新版本。如需有关安装此 Operator 的说明,请参见此页面
  2. 接下来,按照“1.7.1.2 创建 Amazon Web Services S3 存储桶 和 S3 OIDC 机密”下的步骤操作,以设置 AWS S3 存储桶和 S3 OIDC 机密。
    1. 在第 1 步后,运行以下命令:
       

      aws s3api put-bucket-ownership-controls --bucket $BUCKET_NAME --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerPreferred}]"
  3. 接下来,按照“1.7.1.6 启用托管控制平面功能”下的步骤操作,以启用托管控制平面。
  4. 下载 hypershift cli,具体参见“1.7.1.7 安装托管控制平面 CLI

 

演示

以下几个部分将引导您完成下面这些步骤:

  1. 配置环境变量
  2. 创建 Arm 托管控制平面和 64 位 x86 客户机集群
  3. 在现有的 Arm 托管控制平面中添加额外的 64 位 x86 客户机集群
  4. 删除 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.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

按频道浏览

automation icon

自动化

有关技术、团队和环境 IT 自动化的最新信息

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

open hybrid cloud icon

开放混合云

了解我们如何利用混合云构建更灵活的未来

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Original series icon

原创节目

关于企业技术领域的创客和领导者们有趣的故事