×

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

此控制平面架构在使用托管控制平面 (HCP) 的AWS上的Red Hat OpenShift Service (ROSA) 上不受支持。

AWS上的Red Hat OpenShift Service中的机器角色

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

集群工作节点

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

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

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

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

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

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

在AWS上的Red Hat OpenShift Service中,计算机器集控制分配了worker机器角色的计算机器。具有worker角色的机器驱动由特定机器池管理的计算工作负载,该机器池会自动扩展它们。由于AWS上的Red Hat OpenShift Service具有支持多种机器类型的功能,因此具有worker角色的机器被分类为计算机器。在此版本中,术语工作节点计算机器可互换使用,因为唯一默认类型的计算机器是工作节点。在AWS上的Red Hat OpenShift Service的未来版本中,可能默认使用不同类型的计算机器,例如基础设施机器。

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

集群控制平面

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

对于大多数AWS上的Red Hat OpenShift Service集群,控制平面机器由一系列独立的机器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服务器操作符管理。

OpenShift控制器管理器

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

OpenShift控制器管理器由OpenShift控制器管理器操作符管理。

OpenShift OAuth API服务器

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

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

OpenShift OAuth服务器

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

OpenShift OAuth服务器由集群身份验证操作符管理。

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

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

  • CRI-O容器引擎(crio)运行和管理容器。AWS上的Red Hat OpenShift Service使用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

AWS上的Red Hat OpenShift Service中的Operators

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

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

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

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

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

集群Operators

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

可选的附加组件Operators

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

附加组件Operators

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

使用 AWS 上 Red Hat OpenShift Service 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 不管理构成 AWS 上 Red Hat OpenShift Service 体系结构的集群 Operators。

其他资源

etcd概述

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

使用etcd的好处

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

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

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

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

etcd的工作原理

为了确保可靠的集群配置和管理方法,etcd使用etcd Operator。Operator简化了在像AWS上的Red Hat OpenShift Service这样的Kubernetes容器平台上使用etcd。使用etcd Operator,您可以创建或删除etcd成员,调整集群大小,执行备份以及升级etcd。

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

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

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

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

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

控制平面配置的自动更新

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

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

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

根据AWS上Red Hat OpenShift Service集群最初创建的时间,引入控制平面机器集可能会留下一个或两个控制平面节点,其标签或机器名称与其他控制平面节点不一致。例如clustername-master-0clustername-master-1clustername-master-2-abcxyz。此类命名不一致不会影响集群的工作,无需担心。

故障控制平面机器的恢复

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