控制平面由控制平面机器组成,它管理AWS上的Red Hat OpenShift Service集群。控制平面机器管理计算机器上的工作负载,计算机器也称为工作节点。集群本身通过集群版本操作符 (CVO) 和一组单独的操作符的动作来管理所有机器的升级。
此控制平面架构在使用托管控制平面 (HCP) 的AWS上的Red Hat OpenShift Service (ROSA) 上不受支持。 |
AWS上的Red Hat OpenShift Service为主机分配不同的角色。这些角色定义了机器在集群中的功能。集群包含标准master
和worker
角色类型的定义。
在Kubernetes集群中,工作节点运行和管理Kubernetes用户请求的实际工作负载。工作节点公布其容量,调度程序(一种控制平面服务)确定在哪些节点上启动Pod和容器。以下重要服务运行在每个工作节点上
CRI-O,这是容器引擎。
kubelet,这是接受和执行运行和停止容器工作负载请求的服务。
服务代理,它管理跨工作节点的Pod通信。
runC或crun低级容器运行时,它创建和运行容器。
有关如何启用crun而不是默认runC的信息,请参阅创建 |
在AWS上的Red Hat OpenShift Service中,计算机器集控制分配了worker
机器角色的计算机器。具有worker
角色的机器驱动由特定机器池管理的计算工作负载,该机器池会自动扩展它们。由于AWS上的Red Hat OpenShift Service具有支持多种机器类型的功能,因此具有worker
角色的机器被分类为计算机器。在此版本中,术语工作节点和计算机器可互换使用,因为唯一默认类型的计算机器是工作节点。在AWS上的Red Hat OpenShift Service的未来版本中,可能默认使用不同类型的计算机器,例如基础设施机器。
计算机器集是在 |
在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调度程序。
组件 | 描述 |
---|---|
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服务器。
组件 | 描述 |
---|---|
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
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由两个不同的系统管理,具体取决于其用途:
由集群版本Operator (CVO) 管理,默认安装以执行集群功能。
由Operator Lifecycle Manager (OLM) 管理,可以供用户在其应用程序中运行。也称为*基于OLM的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。 |
有关在 AWS 上 Red Hat OpenShift Service 中运行附加组件 Operators 的更多详细信息,请参阅《Operators》指南中关于Operator Lifecycle Manager (OLM)和OperatorHub的部分。
有关 Operator SDK 的更多详细信息,请参阅开发 Operators。
etcd是一个一致的分布式键值存储,它保存少量可以完全放入内存中的数据。尽管etcd是许多项目的核心组件,但它是Kubernetes(这是容器编排的标准系统)的主要数据存储。
通过使用etcd,您可以获得多种好处:
保持云原生应用程序的一致正常运行时间,即使单个服务器发生故障也能保持其工作状态。
存储和复制Kubernetes的所有集群状态。
分发配置数据,为节点配置提供冗余性和弹性。
为了确保可靠的集群配置和管理方法,etcd使用etcd Operator。Operator简化了在像AWS上的Red Hat OpenShift Service这样的Kubernetes容器平台上使用etcd。使用etcd Operator,您可以创建或删除etcd成员,调整集群大小,执行备份以及升级etcd。
etcd Operator观察、分析和采取行动:
它使用Kubernetes API观察集群状态。
它分析当前状态与所需状态之间的差异。
它通过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集群最初创建的时间,引入控制平面机器集可能会留下一个或两个控制平面节点,其标签或机器名称与其他控制平面节点不一致。例如 |