>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Go

如何节省资源和时间来部署数十个 OpenShift 集群

任何部署过 Kubernetes 或 OpenShift 到生产环境的人都知道这种痛点。你想为预发布环境或独立团队启动一个小型隔离集群,但至少需要部署三个带有 etcd 和控制器的 master 节点,这未免太过奢侈。如果你需要十个、三十个甚至一百个集群,云账单会迅速飙升,创建新环境的时间也会拉长到数十分钟。

Red Hat 工程师也遇到了同样的问题,并将其作为开源解决方案发布。这个项目叫做 HyperShift(或托管控制平面)。本质上,它是一个将集群的控制平面从独立节点迁移到中央管理集群内常规 Pod 的层。

让我们来探索它是如何工作的,以及谁会从中受益。

核心架构重点

在经典的 OpenShift 或 Kubernetes 配置中,每个集群都有自己专用的虚拟机或物理机来运行 API server、etcd、控制器和调度器。即使集群大部分时间处于空闲状态,你也需要为这些节点付费。

HyperShift 将控制平面与工作节点分离。

你拥有一个大型管理集群。当需要为用户或开发团队创建新的 OpenShift 集群时,HyperShift 会将新集群的管理组件——etcd、kube-apiserver、openshift-apiserver——作为标准 Pod(Deployment 和 StatefulSet)直接部署到管理集群中。

与此同时,工作节点在需要的地方单独创建:可以在 AWS、Azure 或裸机上。它们连接到在管理基础设施中作为 Pod 运行的 API server。

Overview

为什么要改变熟悉的方式

如果你管理多个集群,这三个方面的好处是显而易见的。

首先是成本效率。不必为每个独立集群购买至少三台虚拟机作为 master 节点,而是利用现有管理集群的资源。结果是数十个控制平面运行在单一资源池上,实现了更密集的整合。

其次是基础设施配置速度。引导一个完整的节点需要安装操作系统、配置 etcd、初始化组件,这通常需要 15 到 45 分钟。HyperShift 中的控制平面 Pod 在几分钟甚至几秒内就能启动。这完全改变了 dev/test 环境的思路:集群成为一个临时资源,易于启动用于某个任务,也能快速删除。

第三是职责分离和安全性。开发人员和应用程序只能访问自己的工作节点和 API server。他们无法物理或网络访问运行控制平面或 etcd 的机器。运维团队可以在一个地方集中更新和监控所有 API server。

实际使用体验

HyperShift 与标准 Kubernetes API 和 OpenShift Container Platform(OCP)工具保持 100% 兼容。从开发人员或 CI/CD 管道的角度来看,创建的集群与普通集群毫无区别:你获得标准的 kubeconfig,通过 kubectl 或 oc 进行操作。

管理通过 CLI 工具 hypershift 或 Custom Resources(CRD)完成,这与 ArgoCD 等 GitOps 方法完美契合。

以下是通过 CLI 在 AWS 上创建集群的示例:

hypershift create cluster aws \
  --name dev-cluster \
  --node-pool-replicas 2 \
  --base-domain example.com \
  --pull-secret /path/to/pull-secret.json \
  --aws-creds /path/to/aws-credentials

在后台,该命令将创建 CRD HostedClusterNodePool。HyperShift 将在管理集群中启动控制平面 Pod,在 AWS 中配置一对 EC2 实例作为工作节点,并将它们连接在一起。

底层原理与细节

该项目使用 Go 编写,由 OpenShift 团队积极开发。仓库已有超过 500 个 fork,但 star 相对较少——刚刚超过五百。这是因为 HyperShift 长期以来一直是 Red Hat 为 ROSA 服务(Red Hat OpenShift Service on AWS)提供的内部技术,现在正逐渐成为本地部署和多云安装的标准。

重要特性包括:

  • 管理集群与客户端工作负载之间的完全隔离。
  • 支持跨不同提供商部署工作节点:AWS、Azure、KubeVirt、裸机。
  • 统一的更新向量。可以通过更改 CRD 中的版本来独立更新控制平面的 OpenShift 版本,而无需立即重启所有工作节点。

有没有什么坑?当然有。管理集群成为所有客户端集群控制平面的单点故障。如果管理集群宕机,工作节点上运行的服务将继续工作,但可管理性将丧失,直到基础设施恢复。因此,管理集群的可靠性和 etcd 备份有更高的要求。

适合人群

如果你只有一个全公司共用的单体集群,HyperShift 并不是必需的。但如果出现以下情况,它就成为救星:

  • 你正在为内部团队构建平台,希望按需提供隔离的集群。
  • 你正在销售基于 Kubernetes 的 SaaS 解决方案,需要对客户端进行物理隔离。
  • 你厌倦了为公有云中闲置的 master 节点付费。

你可以使用官方文档 hypershift.pages.dev 来试用该项目。你需要一个现有的 OpenShift 4.x 集群作为管理集群,以及 AWS 或本地 VM 的访问权限来创建工作节点。

相关项目