$ oc get clusteroperator authentication -o yaml
本参考指南索引了 Red Hat 提供的作为 OpenShift Container Platform 架构基础的 *集群操作符*。除非另有说明,否则集群操作符默认安装,并由集群版本操作符 (CVO) 管理。有关控制平面架构的更多详细信息,请参见 OpenShift Container Platform 中的操作符。
集群管理员可以在 OpenShift Container Platform Web 控制台中,通过 **管理** → **集群设置** 页面查看集群操作符。
集群操作符不受操作符生命周期管理器 (OLM) 和 OperatorHub 管理。OLM 和 OperatorHub 是 OpenShift Container Platform 中用于安装和运行可选 附加组件操作符 的 Operator Framework 的一部分。 |
以下某些集群操作符可以在安装之前禁用。有关更多信息,请参见 集群功能。
集群裸机操作符是一个可选的集群功能,可以在安装期间由集群管理员禁用。有关可选集群功能的更多信息,请参见《安装》中的“集群功能”。 |
集群裸机操作符 (CBO) 部署所有必要的组件,以将裸机服务器转变为可运行 OpenShift Container Platform 计算节点的完全功能的 worker 节点。CBO 确保 metal3 部署(包括裸机操作符 (BMO) 和 Ironic 容器)在 OpenShift Container Platform 集群中的一个控制平面节点上运行。CBO 还侦听 OpenShift Container Platform 对其监视的资源的更新,并采取相应的措施。
云凭据操作符 (CCO) 将云提供商凭据管理为 Kubernetes 自定义资源定义 (CRD)。CCO 同步 CredentialsRequest
自定义资源 (CR),以允许 OpenShift Container Platform 组件请求具有集群运行所需特定权限的云提供商凭据。
通过设置 install-config.yaml
文件中 credentialsMode
参数的不同值,可以将 CCO 配置为以几种不同的模式运行。如果未指定模式,或者 credentialsMode
参数设置为空字符串 (""
),则 CCO 以其默认模式运行。
credentialsrequests.cloudcredential.openshift.io
范围:命名空间
CR:CredentialsRequest
验证:是
无需配置。
集群身份验证操作符在集群中安装并维护 Authentication
自定义资源,并且可以使用以下命令查看:
$ oc get clusteroperator authentication -o yaml
集群自动缩放操作符使用 cluster-api
提供程序管理 OpenShift 集群自动缩放器的部署。
ClusterAutoscaler
:这是一个单例资源,它控制集群的配置自动缩放器实例。操作符仅响应托管命名空间(WATCH_NAMESPACE
环境变量的值)中名为 default
的 ClusterAutoscaler
资源。
MachineAutoscaler
:此资源以节点组为目标,并管理注释以启用和配置该组的自动缩放,即 min
和 max
大小。当前,只有 MachineSet
对象可以作为目标。
此操作符对于 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、IBM Cloud®、全球 Microsoft Azure、Microsoft Azure Stack Hub、Nutanix、Red Hat OpenStack Platform (RHOSP) 和 VMware vSphere 处于通用可用性状态。 此操作符作为针对 IBM Power® 虚拟服务器的 技术预览版 提供。 |
云控制器管理器操作符管理和更新部署在 OpenShift Container Platform 之上的云控制器管理器。该操作符基于 Kubebuilder 框架和 controller-runtime
库。它是通过集群版本操作符 (CVO) 安装的。
它包含以下组件:
操作符
云配置观察器
默认情况下,操作符通过 metrics
服务公开 Prometheus 指标。
此操作符作为针对 Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 VMware vSphere 集群的 技术预览版 提供。 |
集群 CAPI 操作符维护集群 API 资源的生命周期。此操作符负责与在 OpenShift Container Platform 集群中部署集群 API 项目相关的所有管理任务。
awsmachines.infrastructure.cluster.x-k8s.io
范围:命名空间
CR:awsmachine
验证:否
gcpmachines.infrastructure.cluster.x-k8s.io
范围:命名空间
CR:gcpmachine
验证:否
vspheremachines.infrastructure.cluster.x-k8s.io
范围:命名空间
CR:vspheremachine
验证:否
awsmachinetemplates.infrastructure.cluster.x-k8s.io
范围:命名空间
CR:awsmachinetemplate
验证:否
gcpmachinetemplates.infrastructure.cluster.x-k8s.io
范围:命名空间
CR:gcpmachinetemplate
验证:否
vspheremachinetemplates.infrastructure.cluster.x-k8s.io
范围:命名空间
CR:vspheremachinetemplate
验证:否
集群 CSI 快照控制器操作符是一个可选的集群功能,可以在安装期间由集群管理员禁用。有关可选集群功能的更多信息,请参见《安装》中的“集群功能”。 |
集群 CSI 快照控制器操作符安装并维护 CSI 快照控制器。CSI 快照控制器负责监视 VolumeSnapshot
CRD 对象,并管理卷快照的创建和删除生命周期。
集群镜像注册表操作符管理 OpenShift 镜像注册表的单例实例。它管理注册表的所有配置,包括创建存储。
在初始启动时,操作符会根据在集群中检测到的配置创建一个默认的 image-registry
资源实例。这会根据云提供商指示使用哪种云存储类型。
如果可用信息不足以定义完整的 image-registry
资源,则会定义不完整的资源,并且操作符会使用有关缺少哪些信息的信息更新资源状态。
集群镜像注册表操作符在 openshift-image-registry
命名空间中运行,并且还在该位置管理注册表实例。注册表的所有配置和工作负载资源都位于该命名空间。
集群监控操作符 (CMO) 管理和更新部署在 OpenShift Container Platform 之上的基于 Prometheus 的集群监控堆栈。
alertmanagers.monitoring.coreos.com
范围:命名空间
CR:alertmanager
验证:是
prometheuses.monitoring.coreos.com
范围:命名空间
CR:prometheus
验证:是
prometheusrules.monitoring.coreos.com
范围:命名空间
CR:prometheusrule
验证:是
servicemonitors.monitoring.coreos.com
范围:命名空间
CR:servicemonitor
验证:是
$ oc -n openshift-monitoring edit cm cluster-monitoring-config
集群示例操作符是一个可选的集群功能,可以在安装期间由集群管理员禁用。有关可选集群功能的更多信息,请参阅《安装》中的“集群功能”。 |
集群示例操作符管理存储在 openshift
命名空间中的示例镜像流和模板。
在初始启动时,操作符创建默认的示例配置资源以启动镜像流和模板的创建。配置对象是一个集群范围的对象,其键为 cluster
,类型为 configs.samples
。
镜像流是指向 registry.redhat.io
上镜像的基于 Red Hat Enterprise Linux CoreOS (RHCOS) 的 OpenShift Container Platform 镜像流。同样,模板是那些被归类为 OpenShift Container Platform 模板的模板。
集群示例操作符部署包含在 openshift-cluster-samples-operator
命名空间中。启动时,安装拉取密钥由 OpenShift 镜像注册表和 API 服务器中的镜像流导入逻辑用于对 registry.redhat.io
进行身份验证。如果管理员更改了用于示例镜像流的注册表,则可以在 openshift
命名空间中创建任何其他密钥。如果创建,这些密钥将包含 docker
所需的config.json
内容,以方便镜像导入。
集群示例操作符的镜像包含与关联的 OpenShift Container Platform 版本相关的镜像流和模板定义。集群示例操作符创建示例后,它会添加一个注释,该注释表示其兼容的 OpenShift Container Platform 版本。操作符使用此注释来确保每个示例都与兼容的发布版本匹配。其清单外的示例将被忽略,跳过的示例也是如此。
只要不修改或删除版本注释,就可以对操作符管理的任何示例进行修改。但是,在升级时,由于版本注释会更改,因此这些修改可能会被替换,因为示例将使用较新版本更新。Jenkins 镜像是安装的镜像有效负载的一部分,并直接标记到镜像流中。
示例资源包含一个最终器,它在其删除时清理以下内容:
操作符管理的镜像流
操作符管理的模板
操作符生成的配置资源
集群状态资源
删除示例资源后,集群示例操作符将使用默认配置重新创建该资源。
集群存储操作符是一个可选的集群功能,可以在安装期间由集群管理员禁用。有关可选集群功能的更多信息,请参阅《安装》中的“集群功能”。 |
集群存储操作符设置 OpenShift Container Platform 集群范围的存储默认值。它确保为 OpenShift Container Platform 集群存在默认的 storageclass
。它还安装容器存储接口 (CSI) 驱动程序,使您的集群能够使用各种存储后端。
无需配置。
可以通过编辑操作符创建的存储类的注释将其设为非默认值,但只要操作符运行,就不能删除此存储类。
集群操作符管理集群功能的特定区域。集群版本操作符 (CVO) 管理集群操作符的生命周期,其中许多操作符在 OpenShift Container Platform 中默认安装。
CVO 还通过收集集群版本及其集群操作符的状态(包括条件类型,该类型会告知您 OpenShift Container Platform 集群的运行状况和当前状态)来检查 OpenShift 更新服务,以查看基于当前组件版本和图中信息的有效更新和更新路径。
有关集群版本条件类型的更多信息,请参阅“了解集群版本条件类型”。
控制台操作符是一个可选的集群功能,可以在安装期间由集群管理员禁用。如果您在安装时禁用控制台操作符,您的集群仍然受支持并且可以升级。有关可选集群功能的更多信息,请参阅《安装》中的“集群功能”。 |
控制台操作员在集群上安装和维护 OpenShift Container Platform Web 控制台。控制台操作员默认安装,并自动维护控制台。
此操作员适用于亚马逊网络服务 (AWS)、谷歌云平台 (GCP)、微软 Azure、Nutanix 和 VMware vSphere。 |
控制平面机器集操作员自动化管理 OpenShift Container Platform 集群内的控制平面机器资源。
controlplanemachineset.machine.openshift.io
范围:命名空间
CR:ControlPlaneMachineSet
验证:是
DNS 操作员部署和管理 CoreDNS,为 Pod 提供名称解析服务,从而在 OpenShift Container Platform 中启用基于 DNS 的 Kubernetes 服务发现。
操作员根据集群配置创建可工作的默认部署。
默认集群域为cluster.local
。
尚不支持 CoreDNS Corefile 或 Kubernetes 插件的配置。
DNS 操作员将 CoreDNS 作为 Kubernetes 守护进程集进行管理,并将其作为具有静态 IP 的服务公开。CoreDNS 在集群中的所有节点上运行。
etcd 集群操作员自动化 etcd 集群扩展,启用 etcd 监控和指标,并简化灾难恢复过程。
etcds.operator.openshift.io
范围:集群
CR:etcd
验证:是
$ oc edit etcd cluster
Ingress 操作员配置和管理 OpenShift Container Platform 路由器。
clusteringresses.ingress.openshift.io
范围:命名空间
CR:clusteringresses
验证:否
集群配置
类型名称:clusteringresses.ingress.openshift.io
实例名称:default
查看命令
$ oc get clusteringresses.ingress.openshift.io -n openshift-ingress-operator default -o yaml
Ingress 操作员在openshift-ingress
项目中设置路由器,并创建路由器的部署。
$ oc get deployment -n openshift-ingress
Ingress 操作员使用来自network/cluster
状态的clusterNetwork[].cidr
来确定托管 Ingress 控制器(路由器)应以哪种模式(IPv4、IPv6 或双栈)运行。例如,如果clusterNetwork
只包含 v6 cidr
,则 Ingress 控制器以仅 IPv6 模式运行。
在以下示例中,Ingress 操作员管理的 Ingress 控制器将以仅 IPv4 模式运行,因为只存在一个集群网络,并且该网络是 IPv4 cidr
。
$ oc get network/cluster -o jsonpath='{.status.clusterNetwork[*]}'
map[cidr:10.128.0.0/14 hostPrefix:23]
Insights 操作员是集群管理员在安装过程中可以禁用的可选集群功能。有关可选集群功能的更多信息,请参阅《安装》中的“集群功能”。 |
Insights 操作员收集 OpenShift Container Platform 配置数据并将其发送给 Red Hat。这些数据用于生成关于集群可能面临的潜在问题的主动洞察建议。这些洞察通过 console.redhat.com 上的 Insights Advisor 传达给集群管理员。
无需配置。
Insights 操作员补充了 OpenShift Container Platform 遥测功能。
有关 Insights 操作员和遥测的详细信息,请参阅关于远程健康监控。
Kubernetes API 服务器操作员管理和更新部署在 OpenShift Container Platform 之上的 Kubernetes API 服务器。该操作员基于 OpenShift Container Platform library-go
框架,并使用集群版本操作员 (CVO) 安装。
kubeapiservers.operator.openshift.io
范围:集群
CR:kubeapiserver
验证:是
$ oc edit kubeapiserver
Kubernetes 控制器管理器操作员管理和更新部署在 OpenShift Container Platform 之上的 Kubernetes 控制器管理器。该操作员基于 OpenShift Container Platform library-go
框架,并通过集群版本操作员 (CVO) 安装。
它包含以下组件:
操作符
引导清单渲染器
基于静态 Pod 的安装程序
配置观察器
默认情况下,操作符通过 metrics
服务公开 Prometheus 指标。
Kubernetes 调度程序操作员管理和更新部署在 OpenShift Container Platform 之上的 Kubernetes 调度程序。该操作员基于 OpenShift Container Platform library-go
框架,并与集群版本操作员 (CVO) 一起安装。
Kubernetes 调度程序操作员包含以下组件:
操作符
引导清单渲染器
基于静态 Pod 的安装程序
配置观察器
默认情况下,操作员通过指标服务公开 Prometheus 指标。
Kubernetes 调度程序的配置是合并的结果:
默认配置。
来自规范schedulers.config.openshift.io
的观察到的配置。
所有这些都是稀疏配置,无效的 JSON 片段,最终合并形成有效的配置。
机器 API 操作员管理特定用途自定义资源定义 (CRD)、控制器和 RBAC 对象的生命周期,这些对象扩展了 Kubernetes API。这声明了集群中机器的期望状态。
机器集
机器
机器健康检查
机器配置操作员管理和应用基础操作系统和容器运行时的配置和更新,包括内核和 kubelet 之间的全部内容。
有四个组件:
machine-config-server
:向加入集群的新机器提供 Ignition 配置。
machine-config-controller
:协调将机器升级到由MachineConfig
对象定义的所需配置。提供了选项来单独控制机器集的升级。
machine-config-daemon
:在更新期间应用新的机器配置。验证并验证机器的状态是否与请求的机器配置一致。
machine-config
:在安装、首次启动和机器更新时提供完整的机器配置源。
目前,没有支持的方法来阻止或限制机器配置服务器端点。必须将机器配置服务器公开到网络中,以便新配置的机器(没有现有配置或状态)能够获取其配置。在此模型中,信任的根是证书签名请求 (CSR) 端点,kubelet 在此处发送其证书签名请求以批准加入集群。因此,机器配置不应用于分发敏感信息,例如密钥和证书。 为确保在裸机场景中机器配置服务器端点(端口 22623 和 22624)的安全,客户必须配置正确的网络策略。 |
市场运营商是可选的集群功能,如果不需要,集群管理员可以禁用它。有关可选集群功能的更多信息,请参阅《安装》中的“集群功能”。 |
市场运营商通过在集群上使用一组默认的 Operator Lifecycle Manager (OLM) 目录,简化了将集群外部的 Operator 引入集群的过程。安装市场运营商后,它会创建 `openshift-marketplace` 命名空间。OLM 确保安装在 `openshift-marketplace` 命名空间中的目录源可用于集群上的所有命名空间。
节点调优运营商通过协调 TuneD 守护程序来帮助您管理节点级调优,并通过使用性能配置文件控制器来实现低延迟性能。大多数高性能应用程序都需要一定程度的内核调优。节点调优运营商为节点级 sysctl 的用户提供统一的管理界面,并提供更多灵活性来添加用户需求指定的自定义调优。
该运营商将 OpenShift Container Platform 的容器化 TuneD 守护程序作为 Kubernetes 守护程序集进行管理。它确保自定义调优规范以守护程序可以理解的格式传递给集群中运行的所有容器化 TuneD 守护程序。守护程序在集群中的所有节点上运行,每个节点一个。
容器化 TuneD 守护程序应用的节点级设置会在触发配置文件更改的事件中回滚,或者当容器化 TuneD 守护程序通过接收和处理终止信号而被优雅地终止时回滚。
节点调优运营商使用性能配置文件控制器来实现自动调优,从而为 OpenShift Container Platform 应用程序实现低延迟性能。
集群管理员配置性能配置文件以定义以下节点级设置:
将内核更新到 kernel-rt。
选择用于管理的 CPU。
选择用于运行工作负载的 CPU。
节点调优运营商是 4.1 及更高版本 OpenShift Container Platform 标准安装的一部分。
在早期版本的 OpenShift Container Platform 中,使用性能附加组件运营商来实现自动调优,以实现 OpenShift 应用程序的低延迟性能。在 OpenShift Container Platform 4.11 及更高版本中,此功能是节点调优运营商的一部分。 |
OpenShift API 服务器运营商在集群上安装和维护 `openshift-apiserver`。
openshiftapiservers.operator.openshift.io
范围:集群
CR:`openshiftapiserver`
验证:是
OpenShift 控制器管理器运营商在集群中安装和维护 `OpenShiftControllerManager` 自定义资源,可以使用以下命令查看:
$ oc get clusteroperator openshift-controller-manager -o yaml
可以使用以下命令在集群中查看自定义资源定义 (CRD) `openshiftcontrollermanagers.operator.openshift.io`:
$ oc get crd openshiftcontrollermanagers.operator.openshift.io -o yaml
Operator Lifecycle Manager (OLM) 帮助用户安装、更新和管理 Kubernetes 原生应用程序(Operator)及其在 OpenShift Container Platform 集群中运行的关联服务的生命周期。它是 Operator Framework 的一部分,这是一个开源工具包,旨在以有效、自动化和可扩展的方式管理 Operator。
OLM 在 OpenShift Container Platform 4.17 中默认运行,这有助于集群管理员安装、升级和授予在其集群上运行的 Operator 的访问权限。OpenShift Container Platform Web 控制台为集群管理员提供管理屏幕,用于安装 Operator,以及授予特定项目访问集群上可用 Operator 目录的权限。
对于开发人员,自助服务体验允许配置和配置数据库、监控和大型数据服务的实例,而无需成为主题专家,因为 Operator 已将该知识集成到其中。
Operator Lifecycle Manager (OLM) 由两个 Operator 组成:OLM Operator 和 Catalog Operator。
每个 Operator 都负责管理作为 OLM 框架基础的自定义资源定义 (CRD)。
资源 | 简称 | 所有者 | 描述 |
---|---|---|---|
|
|
OLM |
应用程序元数据:名称、版本、图标、所需资源、安装等等。 |
|
|
Catalog |
要创建的资源的计算列表,用于自动安装或升级 CSV。 |
|
|
Catalog |
CSV、CRD 和包的存储库,用于定义应用程序。 |
|
|
Catalog |
通过跟踪包中的通道来保持 CSV 最新。 |
|
|
OLM |
将部署在与 `OperatorGroup` 对象相同的命名空间中的所有 Operator 配置为在其自定义资源 (CR) 的命名空间列表或集群范围内进行监视。 |
每个 Operator 还负责创建以下资源:
资源 | 所有者 |
---|---|
|
OLM |
|
|
|
|
|
|
|
Catalog |
|
OLM Operator 负责在集群中存在 CSV 中指定的所需资源后,部署由 CSV 资源定义的应用程序。
OLM Operator 不关心所需资源的创建;您可以选择使用 CLI 或 Catalog Operator 手动创建这些资源。这种关注点分离允许用户在他们选择利用多少 OLM 框架来实现其应用程序方面进行增量购买。
OLM Operator 使用以下工作流程:
监视命名空间中的集群服务版本 (CSV),并检查是否满足要求。
如果满足要求,则运行 CSV 的安装策略。
CSV 必须是 Operator 组的活动成员才能运行安装策略。 |
Catalog Operator 负责解析和安装集群服务版本 (CSV) 及其指定的所需资源。它还负责监视目录源以获取通道中包的更新,并在需要时自动将其升级到最新的可用版本。
要跟踪通道中的包,您可以创建一个 `Subscription` 对象,配置所需的包、通道和要用于提取更新的 `CatalogSource` 对象。找到更新后,将代表用户将相应的 `InstallPlan` 对象写入命名空间。
Catalog Operator 使用以下工作流程:
连接到集群中的每个目录源。
监视用户创建的未解析安装计划,如果找到:
查找与请求名称匹配的 CSV,并将 CSV 添加为已解析资源。
对于每个托管或必需的 CRD,将 CRD 添加为已解析资源。
对于每个必需的 CRD,查找管理它的 CSV。
监视已解析的安装计划,并在用户批准或自动批准的情况下为其创建所有已发现的资源。
监视目录源和订阅,并根据它们创建安装计划。
目录注册表存储用于在集群中创建的 CSV 和 CRD,并存储有关包和通道的元数据。
软件包清单是目录注册表中的一个条目,它将软件包标识与 CSV 集关联起来。在一个软件包中,通道指向特定的 CSV。由于 CSV 显式地引用了它们替换的 CSV,因此软件包清单为目录操作符提供了更新通道中 CSV 到最新版本所需的所有信息,逐步遍历每个中间版本。
更多信息,请参阅关于理解 Operator Lifecycle Manager (OLM)的部分。
vSphere 问题检测操作符检查部署在 vSphere 上的集群中与存储相关的常见安装和配置错误问题。
只有当集群存储操作符检测到集群部署在 vSphere 上时,才会启动 vSphere 问题检测操作符。 |
无需配置。
该操作符支持在 vSphere 上安装 OpenShift Container Platform。
该操作符使用vsphere-cloud-credentials
与 vSphere 通信。
该操作符执行与存储相关的检查。
更多详情,请参阅使用 vSphere 问题检测操作符。