您可以使用两种不同的控制平面配置部署OpenShift Container Platform集群:独立式或托管式控制平面。独立式配置使用专用虚拟机或物理机来托管控制平面。对于OpenShift Container Platform的托管式控制平面,您可以在管理集群上创建控制平面作为Pod,而无需为每个控制平面使用专用的虚拟机或物理机。
托管式控制平面可通过在以下平台上使用受支持版本的Kubernetes运算符多集群引擎来获得
使用Agent提供程序的裸机
非裸机Agent机器,作为技术预览功能
OpenShift虚拟化
Amazon Web Services (AWS)
IBM Z
IBM Power
托管式控制平面功能默认启用。
OpenShift Container Platform通常以耦合或独立模式部署,其中集群由控制平面和数据平面组成。控制平面包括API端点、存储端点、工作负载调度程序和确保状态的执行器。数据平面包括计算、存储和网络,工作负载和应用程序在其中运行。
独立式控制平面由一组专用节点托管,这些节点可以是物理的或虚拟的,并且最少数量的节点可以确保仲裁。网络栈是共享的。对集群的管理员访问权限可以查看集群的控制平面、机器管理API和其他有助于集群状态的组件。
虽然独立模式运行良好,但在某些情况下,需要控制平面和数据平面解耦的架构。在这些情况下,数据平面位于具有专用物理托管环境的单独网络域中。控制平面使用 Kubernetes 原生的高级基元(例如部署和 StatefulSet)进行托管。控制平面被视为任何其他工作负载。
使用托管控制平面,您可以为真正的混合云方法铺平道路,并享受其他诸多优势。
由于控制平面已解耦并在专用托管服务集群上托管,因此管理和工作负载之间的安全边界更强。因此,您不太可能将集群的凭据泄漏给其他用户。由于基础设施密钥帐户管理也已解耦,因此集群基础设施管理员不会意外删除控制平面基础设施。
使用托管控制平面,您可以在更少的节点上运行多个控制平面。因此,集群更经济实惠。
由于控制平面由在 OpenShift Container Platform 上启动的 Pod 组成,因此控制平面启动速度很快。相同的原则适用于控制平面和工作负载,例如监控、日志记录和自动缩放。
从基础设施的角度来看,您可以将注册表、HAProxy、集群监控、存储节点和其他基础设施组件推送到租户的云提供商帐户,从而将使用情况隔离到租户。
从操作角度来看,多集群管理更加集中,从而减少了影响集群状态和一致性的外部因素。站点可靠性工程师拥有一个中心位置来调试问题并导航到集群数据平面,这可以缩短平均恢复时间 (TTR) 并提高生产力。
托管控制平面是 OpenShift Container Platform 的一种形式因素。托管集群和独立 OpenShift Container Platform 集群的配置和管理方式不同。请参阅下表以了解 OpenShift Container Platform 和托管控制平面之间的区别。
OpenShift Container Platform | 托管控制平面 |
---|---|
您可以使用 `openshift-install` 二进制文件或 Assisted Installer 安装独立的 OpenShift Container Platform 集群。 |
您可以使用 `hypershift.openshift.io` API 资源(例如 `HostedCluster` 和 `NodePool`)在现有的 OpenShift Container Platform 集群上安装托管集群。 |
OpenShift Container Platform | 托管控制平面 |
---|---|
您可以使用 `config.openshift.io` API 组配置集群范围的资源,例如身份验证、API 服务器和代理。 |
您可以配置影响 `HostedCluster` 资源中控制平面的资源。 |
OpenShift Container Platform | 托管控制平面 |
---|---|
您可以使用带有 AES-GCM 或 AES-CBC 的 `APIServer` 资源配置 etcd 加密。有关更多信息,请参阅“启用 etcd 加密”。 |
您可以使用 `HostedCluster` 资源中的 `SecretEncryption` 字段以及 AES-CBC 或 Amazon Web Services 的 KMS 配置 etcd 加密。 |
OpenShift Container Platform | 托管控制平面 |
---|---|
独立的 OpenShift Container Platform 集群包含每个控制平面组件的单独运算符。 |
托管集群包含一个名为控制平面运算符的单个运算符,该运算符在管理集群上的托管控制平面命名空间中运行。 |
etcd 使用安装在控制平面节点上的存储。etcd 集群运算符管理 etcd。 |
etcd 使用持久卷声明进行存储,并由控制平面运算符管理。 |
Ingress 运算符、网络相关运算符和运算符生命周期管理器 (OLM) 在集群上运行。 |
Ingress 运算符、网络相关运算符和运算符生命周期管理器 (OLM) 在管理集群上的托管控制平面命名空间中运行。 |
OAuth 服务器在集群内运行,并通过集群中的路由公开。 |
OAuth 服务器在控制平面内运行,并通过管理集群上的路由、节点端口或负载均衡器公开。 |
OpenShift Container Platform | 托管控制平面 |
---|---|
集群版本运算符 (CVO) 编排更新过程并监控 `ClusterVersion` 资源。管理员和 OpenShift 组件可以通过 `ClusterVersion` 资源与 CVO 交互。`oc adm upgrade` 命令会导致 `ClusterVersion` 资源中 `ClusterVersion.Spec.DesiredUpdate` 字段发生更改。 |
托管控制平面更新会导致 `HostedCluster` 和 `NodePools` 资源中的 `.spec.release.image` 字段发生更改。对 `ClusterVersion` 资源的任何更改都将被忽略。 |
更新 OpenShift Container Platform 集群后,控制平面和计算机都将更新。 |
更新托管集群后,只有控制平面会更新。您需要单独执行节点池更新。 |
OpenShift Container Platform | 托管控制平面 |
---|---|
`MachineSets` 资源管理 `openshift-machine-api` 命名空间中的机器。 |
`NodePool` 资源管理管理集群上的机器。 |
一组控制平面机器可用。 |
一组控制平面机器不存在。 |
您可以使用 `MachineHealthCheck` 资源启用机器运行状况检查。 |
您可以通过 `NodePool` 资源中的 `.spec.management.autoRepair` 字段启用机器运行状况检查。 |
您可以使用 `ClusterAutoscaler` 和 `MachineAutoscaler` 资源启用自动缩放。 |
您可以通过 `NodePool` 资源中的 `spec.autoScaling` 字段启用自动缩放。 |
机器和机器集在集群中公开。 |
来自上游集群 CAPI 运算符的机器、机器集和机器部署用于管理机器,但不会向用户公开。 |
更新集群时,所有机器集都会自动升级。 |
您可以独立于托管集群更新来更新节点池。 |
集群中仅支持就地升级。 |
托管集群中支持替换和就地升级。 |
机器配置运算符管理机器的配置。 |
托管控制平面中不存在机器配置运算符。 |
您可以使用从 `MachineConfigPool` 选择器中选择的 `MachineConfig`、`KubeletConfig` 和 `ContainerRuntimeConfig` 资源配置机器 Ignition。 |
您可以通过 |
机器配置守护程序 (MCD) 管理每个节点上的配置更改和更新。 |
对于就地升级,节点池控制器会创建一个运行一次的 Pod,该 Pod 会根据您的配置更新机器。 |
您可以修改机器配置资源,例如 SR-IOV 运算符。 |
您无法修改机器配置资源。 |
OpenShift Container Platform | 托管控制平面 |
---|---|
Kube API 服务器直接与节点通信,因为 Kube API 服务器和节点位于同一个虚拟私有云 (VPC) 中。 |
Kube API 服务器通过 Konnectivity 与节点通信。Kube API 服务器和节点位于不同的虚拟私有云 (VPC) 中。 |
节点通过内部负载均衡器与 Kube API 服务器通信。 |
节点通过外部负载均衡器或节点端口与 Kube API 服务器通信。 |
您可以使用 Kubernetes 运算符的多集群引擎配置托管控制平面。多集群引擎是 Red Hat Advanced Cluster Management (RHACM) 的一个组成部分,在 RHACM 中默认启用。多集群引擎运算符集群生命周期定义了在各种基础设施云提供商、私有云和本地数据中心中创建、导入、管理和销毁 Kubernetes 集群的过程。
多集群引擎运算符是集群生命周期运算符,它为 OpenShift Container Platform 和 RHACM 集线器集群提供集群管理功能。多集群引擎运算符增强了集群集群管理,并支持跨云和数据中心的 OpenShift Container Platform 集群生命周期管理。
您可以将多集群引擎运算符与 OpenShift Container Platform 一起用作独立的集群管理器或作为 RHACM 集线器集群的一部分。
管理集群也称为托管集群。 |
您可以使用两种不同的控制平面配置部署OpenShift Container Platform集群:独立式或托管式控制平面。独立式配置使用专用虚拟机或物理机来托管控制平面。对于OpenShift Container Platform的托管式控制平面,您可以在管理集群上创建控制平面作为Pod,而无需为每个控制平面使用专用的虚拟机或物理机。
如果您想将托管集群引入 Red Hat Advanced Cluster Management (RHACM) 集线器集群以使用 RHACM 管理组件进行管理,请参阅Red Hat Advanced Cluster Management 官方文档中的说明。
托管控制平面功能包括以下组件,这些组件可能需要独立的版本控制和支持级别
管理集群
HyperShift运算符
托管控制平面 (hcp
) 命令行界面 (CLI)
hypershift.openshift.io
API
控制平面运算符
在用于生产的管理集群中,您需要 Kubernetes 运算符的多集群引擎,该引擎可通过 OperatorHub 获得。多集群引擎运算符捆绑了 HyperShift 运算符的支持版本。为了使您的管理集群保持受支持状态,您必须使用多集群引擎运算符运行的 OpenShift Container Platform 版本。一般来说,多集群引擎运算符的新版本运行在以下版本的 OpenShift Container Platform 上
最新版本的 OpenShift Container Platform
最新版本 OpenShift Container Platform 之前的两个版本
您可以通过 HyperShift 运算符在管理集群上安装的 OpenShift Container Platform 版本的完整列表取决于您的 HyperShift 运算符的版本。但是,该列表始终至少包含与管理集群相同的 OpenShift Container Platform 版本以及相对于管理集群的两个之前的次要版本。例如,如果管理集群运行的是 4.17 和受支持版本的多集群引擎运算符,则 HyperShift 运算符可以安装 4.17、4.16、4.15 和 4.14 托管集群。
随着 OpenShift Container Platform 的每个主要、次要或补丁版本发布,托管控制平面的两个组件也会发布
HyperShift 运算符
hcp
命令行界面 (CLI)
HyperShift 运算符管理由HostedCluster
API 资源表示的托管集群的生命周期。HyperShift 运算符随每个 OpenShift Container Platform 版本一起发布。HyperShift 运算符在hypershift
命名空间中创建supported-versions
配置映射。配置映射包含受支持的托管集群版本。
您可以在同一个管理集群上托管不同版本的控制平面。
supported-versions
配置映射对象 apiVersion: v1
data:
supported-versions: '{"versions":["4.17"]}'
kind: ConfigMap
metadata:
labels:
hypershift.openshift.io/supported-versions: "true"
name: supported-versions
namespace: hypershift
您可以使用hcp
CLI 创建托管集群。您可以从多集群引擎运算符下载 CLI。当您运行hcp version
命令时,输出将显示 CLI 根据您的kubeconfig
文件支持的最新 OpenShift Container Platform。
您可以使用hypershift.openshift.io
API 资源(例如HostedCluster
和NodePool
)大规模创建和管理 OpenShift Container Platform 集群。HostedCluster
资源包含控制平面和公共数据平面配置。创建HostedCluster
资源后,您将拥有一个功能齐全的控制平面,但没有附加的节点。NodePool
资源是一组可扩展的工作节点,附加到HostedCluster
资源。
API 版本策略通常与Kubernetes API 版本控制的策略一致。
托管控制平面的更新涉及更新托管集群和节点池。有关更多信息,请参阅“托管控制平面的更新”。
使用 OpenShift Container Platform 的托管控制平面时,了解其关键概念和相关角色非常重要。
一个 OpenShift Container Platform 集群,其控制平面和 API 端点托管在管理集群上。托管集群包括控制平面及其相应的数据平面。
存在于租户或最终用户云帐户中的网络、计算和存储资源。
运行在管理集群上的 OpenShift Container Platform 控制平面,由托管集群的 API 端点公开。控制平面的组件包括 etcd、Kubernetes API 服务器、Kubernetes 控制器管理器和 VPN。
参见管理集群。
中心集群管理的集群。此术语特定于 Kubernetes 运算符的多集群引擎在 Red Hat Advanced Cluster Management 中管理的集群生命周期。托管集群与管理集群不同。更多信息,请参见 托管集群。
部署 HyperShift 运算符并托管托管集群控制平面的 OpenShift Container Platform 集群。管理集群与托管集群同义。
管理集群的网络、计算和存储资源。
管理与托管集群关联的一组计算节点的资源。计算节点在托管集群中运行应用程序和工作负载。
担任此角色的用户相当于独立 OpenShift Container Platform 中的管理员。此用户在已配置的集群中具有 `cluster-admin` 角色,但可能无权控制集群的更新或配置时间或方式。此用户可能只有只读访问权限才能查看投影到集群的一些配置。
担任此角色的用户相当于独立 OpenShift Container Platform 中的开发者。此用户无法查看 OperatorHub 或机器。
担任此角色的用户可以请求控制平面和工作节点,驱动更新或修改外部配置。通常,此用户不管理或访问云凭据或基础设施加密密钥。集群服务使用者角色可以请求托管集群并与节点池交互。担任此角色的用户具有 RBAC 权限,可以在逻辑边界内创建、读取、更新或删除托管集群和节点池。
担任此角色的用户通常在管理集群上具有 `cluster-admin` 角色,并具有 RBAC 权限来监控和拥有租户托管集群的 HyperShift 运算符以及控制平面的可用性。集群服务提供商角色负责多项活动,包括以下示例
拥有控制平面可用性、正常运行时间和稳定性的服务级别对象
配置管理集群的云帐户以托管控制平面
配置用户提供的基础设施,包括可用计算资源的主机感知