×

控制平面由控制平面机器组成,它管理 OpenShift Dedicated 集群。控制平面机器管理计算机器上的工作负载,计算机器也称为工作节点。集群本身通过集群版本 Operator (CVO) 和一组单独的 Operator 的操作来管理所有机器的升级。

OpenShift Dedicated 中的机器角色

OpenShift Dedicated 为主机分配不同的角色。这些角色定义了机器在集群中的功能。集群包含标准masterworker角色类型的定义。

集群工作节点

在 Kubernetes 集群中,工作节点运行和管理 Kubernetes 用户请求的实际工作负载。工作节点宣传其容量,调度程序(一种控制平面服务)确定在哪些节点上启动 Pod 和容器。以下重要服务在每个工作节点上运行

  • CRI-O,它是容器引擎。

  • kubelet,它是接受和满足运行和停止容器工作负载请求的服务。

  • 服务代理,它管理跨工作节点的 Pod 通信。

  • runC 或 crun 低级容器运行时,它创建和运行容器。

有关如何启用 crun 而不是默认 runC 的信息,请参阅创建ContainerRuntimeConfig CR 的文档。

在 OpenShift Dedicated 中,计算机器集控制分配了worker机器角色的计算机器。具有worker角色的机器驱动由自动缩放它们的特定机器池管理的计算工作负载。由于 OpenShift Dedicated 具有支持多种机器类型的容量,因此具有worker角色的机器被称为计算机器。在此版本中,术语工作节点计算机器可以互换使用,因为唯一默认类型的计算机器是工作节点。在未来版本的 OpenShift Dedicated 中,默认情况下可能会使用不同类型的计算机器,例如基础架构机器。

计算机器集是在machine-api命名空间下计算机器资源的组合。计算机器集是旨在在特定云提供商上启动新计算机器的配置。相反,机器配置池 (MCP) 是机器配置 Operator (MCO) 命名空间的一部分。MCP 用于将机器分组在一起,以便 MCO 可以管理其配置并促进其升级。

集群控制平面

在 Kubernetes 集群中,节点运行控制 Kubernetes 集群所需的服务。在 OpenShift Dedicated 中,控制平面由具有master机器角色的控制平面机器组成。它们包含的不仅仅是管理 OpenShift Dedicated 集群的 Kubernetes 服务。

对于大多数 OpenShift Dedicated 集群,控制平面机器由一系列独立的机器 API 资源定义。控制平面使用控制平面机器集进行管理。额外的控件适用于控制平面机器,以防止您删除所有控制平面机器并破坏您的集群。

单可用区集群和多可用区集群至少需要三个控制平面节点。

属于控制平面上的 Kubernetes 类别的服务包括 Kubernetes API 服务器、etcd、Kubernetes 控制器管理器和 Kubernetes 调度程序。

表 1. 在控制平面上运行的 Kubernetes 服务
组件 描述

Kubernetes API 服务器

Kubernetes API 服务器验证和配置 Pod、服务和复制控制器的数 据。它还为集群的共享状态提供了一个焦点。

etcd

etcd 存储持久化的控制平面状态,其他组件监视 etcd 的变化,从而使其自身达到指定状态。

Kubernetes 控制器管理器

Kubernetes 控制器管理器监视 etcd 中对象的更改,例如副本、命名空间和服务帐户控制器对象,然后使用 API 来强制执行指定的状态。多个这样的进程创建一个集群,一次只有一个活动领导者。

Kubernetes 调度器

Kubernetes 调度器监视新创建的、未分配节点的 Pod,并选择最佳节点来托管该 Pod。

还有一些在控制平面上运行的 OpenShift 服务,包括 OpenShift API 服务器、OpenShift 控制器管理器、OpenShift OAuth API 服务器和 OpenShift OAuth 服务器。

表 2. 在控制平面上运行的 OpenShift 服务
组件 描述

OpenShift API 服务器

OpenShift API 服务器验证和配置 OpenShift 资源(例如项目、路由和模板)的数据。

OpenShift API 服务器由 OpenShift API 服务器 Operator 管理。

OpenShift 控制器管理器

OpenShift 控制器管理器监视 etcd 中 OpenShift 对象的更改,例如项目、路由和模板控制器对象,然后使用 API 来强制执行指定的状态。

OpenShift 控制器管理器由 OpenShift 控制器管理器 Operator 管理。

OpenShift OAuth API 服务器

OpenShift OAuth API 服务器验证和配置用于向 OpenShift Dedicated 进行身份验证的数据,例如用户、组和 OAuth 令牌。

OpenShift OAuth API 服务器由集群身份验证 Operator 管理。

OpenShift OAuth 服务器

用户向 OpenShift OAuth 服务器请求令牌以向 API 进行身份验证。

OpenShift OAuth 服务器由集群身份验证 Operator 管理。

控制平面机器上的一些服务作为 systemd 服务运行,而另一些则作为静态 Pod 运行。

Systemd 服务适用于您需要在特定系统启动后不久始终启动的服务。对于控制平面机器,这些服务包括 sshd,它允许远程登录。它还包括以下服务:

  • CRI-O 容器引擎 (crio),它运行和管理容器。OpenShift Dedicated 使用 CRI-O 而不是 Docker 容器引擎。

  • Kubelet (kubelet),它接受来自控制平面服务的管理机器上容器的请求。

CRI-O 和 Kubelet 必须作为 systemd 服务直接在主机上运行,因为它们需要在运行其他容器之前运行。

installer-*revision-pruner-* 控制平面 Pod 必须以 root 权限运行,因为它们写入 /etc/kubernetes 目录,该目录由 root 用户拥有。这些 Pod 位于以下命名空间:

  • openshift-etcd

  • openshift-kube-apiserver

  • openshift-kube-controller-manager

  • openshift-kube-scheduler

OpenShift Dedicated 中的 Operators

Operators 是 OpenShift Dedicated 最重要的组件之一。它们是在控制平面上打包、部署和管理服务的首选方法。它们还可以为用户运行的应用程序提供优势。

Operators 与 Kubernetes API 和 CLI 工具(如 kubectl 和 OpenShift CLI(oc))集成。它们提供了监控应用程序、执行健康检查、管理空中 (OTA) 更新以及确保应用程序保持在指定状态的方法。

Operators 还提供了更细粒度的配置体验。您可以通过修改 Operator 公开的 API 来配置每个组件,而不是修改全局配置文件。

由于 CRI-O 和 Kubelet 运行在每个节点上,因此几乎所有其他集群功能都可以通过使用 Operators 在控制平面上进行管理。通过使用 Operators 添加到控制平面的组件包括关键的网络和凭据服务。

虽然两者都遵循类似的 Operator 概念和目标,但 OpenShift Dedicated 中的 Operators 由两个不同的系统管理,具体取决于其用途

集群 Operators

由集群版本 Operator (CVO) 管理,默认情况下安装以执行集群功能。

可选附加组件 Operators

由 Operator Lifecycle Manager (OLM) 管理,可以提供给用户在其应用程序中运行。也称为 *基于 OLM 的 Operators*。

附加组件 Operators

Operator Lifecycle Manager (OLM) 和 OperatorHub 是 OpenShift Dedicated 中的默认组件,它们有助于将 Kubernetes 原生应用程序作为 Operators 进行管理。它们共同提供了在集群上发现、安装和管理可选附加组件 Operators 的系统。

使用 OpenShift Dedicated Web 控制台中的 OperatorHub,具有 dedicated-admin 角色的管理员和授权用户可以选择要从 Operators 目录中安装的 Operators。从 OperatorHub 安装 Operator 后,可以将其全局可用或在特定命名空间中可用以在用户应用程序中运行。

提供了默认的目录源,其中包括 Red Hat Operators、经过认证的 Operators 和社区 Operators。具有 dedicated-admin 角色的管理员还可以添加他们自己的自定义目录源,其中可以包含一组自定义的 Operators。

Operator Hub 市场中列出的所有 Operators 都应该可用作安装。这些 Operators 被视为客户工作负载,并且不受 Red Hat 站点可靠性工程 (SRE) 监控。

开发人员也可以使用 Operator SDK 来帮助编写利用 OLM 功能的自定义 Operators。然后,可以将他们的 Operator 打包并添加到自定义目录源中,该目录源可以添加到集群并提供给用户。

OLM 不管理构成 OpenShift Dedicated 架构的集群 Operators。

其他资源

etcd 概述

etcd 是一个一致的分布式键值存储,它保存少量可以完全放入内存中的数据。虽然 etcd 是许多项目的核心组件,但它是 Kubernetes 的主要数据存储,Kubernetes 是容器编排的标准系统。

使用 etcd 的好处

通过使用 etcd,您可以获得多种好处:

  • 保持云原生应用程序的一致运行时间,即使单个服务器发生故障也能使其继续工作

  • 存储和复制 Kubernetes 的所有集群状态

  • 分发配置数据,为节点配置提供冗余和弹性

etcd 的工作原理

为了确保集群配置和管理的可靠方法,etcd 使用 etcd Operator。Operator 简化了在 Kubernetes 容器平台(如 OpenShift Dedicated)上使用 etcd 的过程。使用 etcd Operator,您可以创建或删除 etcd 成员、调整集群大小、执行备份以及升级 etcd。

etcd Operator 观察、分析和采取行动:

  1. 它使用 Kubernetes API 观察集群状态。

  2. 它分析当前状态与所需状态之间的差异。

  3. 它通过 etcd 集群管理 API、Kubernetes API 或两者共同修复差异。

etcd 保持集群状态,该状态不断更新。此状态持续持久化,导致大量的小型变更频繁发生。因此,Red Hat 站点可靠性工程 (SRE) 使用快速、低延迟的 I/O 来支持 etcd 集群成员。

控制平面配置的自动更新

在 OpenShift Dedicated 集群上,控制平面机器集会自动将更改传播到您的控制平面配置。当需要替换控制平面机器时,控制平面机器集操作符会根据ControlPlaneMachineSet自定义资源 (CR) 中指定的配置创建一个替换机器。当新的控制平面机器准备就绪后,操作符会安全地排空并终止旧的控制平面机器,从而减轻对集群 API 或工作负载可用性的任何潜在负面影响。

您无法请求仅在维护窗口期间进行控制平面机器替换。控制平面机器集操作符的作用是确保集群稳定性。等待维护窗口可能会导致集群稳定性受损。

控制平面机器可以随时被标记为需要替换,通常是因为机器不符合规范或进入不健康状态。这种替换是集群生命周期中的正常部分,无需担心。如果控制平面节点替换的任何部分失败,SRE 将会自动收到警报。

根据 OpenShift Dedicated 集群最初创建的时间,引入控制平面机器集可能会导致一到两个控制平面节点的标签或机器名称与其他控制平面节点不一致。例如clustername-master-0clustername-master-1clustername-master-2-abcxyz。这种命名不一致不会影响集群的运行,无需担心。

故障控制平面机器的恢复

控制平面机器集操作符会自动恢复控制平面机器。当控制平面机器被删除时,操作符会根据ControlPlaneMachineSet自定义资源 (CR) 中指定的配置创建一个替换机器。