OPENSHIFT CONTAINER PLATFORM CONTROL PLANE

简介: control plane 由 master 机器组成,负责管理 OpenShift Container Platform 集群。control plane 机器管理计算机器(也被称为 worker)上的工作负载。集群本身通过Cluster Version Operator、Machine Config Operator 和一组单独 Operator 的操作来管理对机器的所有升级。

3.1. 了解 OpenShift Container Platform control plane
control plane 由 master 机器组成,负责管理 OpenShift Container Platform 集群。control plane 机器管理计算机器(也被称为 worker)上的工作负载。集群本身通过Cluster Version Operator、Machine Config Operator 和一组单独 Operator 的操作来管理对机器的所有升级。
3.1.1. OpenShift Container Platform 中的机器角色
OpenShift Container Platform 为主机分配不同的角色。这些角色定义机器在集群内的功能。集群包含标准 master 和 worker 角色类型的定义。
注意
集群还包含 bootstrap 角色的定义。由于 bootstrap 机器仅在集群安装期间使用,因此其功能在集群安装文档中阐述。
3.1.1.1. 集群 worker
在 Kubernetes 集群中,worker 节点是运行和管理 Kubernetes 用户请求的实际工作负载的地方。worker 节点公告其容量,而作为 master 服务一部分的调度程序决定在哪些节点上启动容器和 Pod。重要服务在每个 worker 节点上运行,包括 CRI-O(即容器引擎)、Kubelet(接受并履行运行和停止容器工作负载请求的服务),以及服务代理(管理 worker 之间 Pod 的通信)。
在 OpenShift Container Platform 中,MachineSets 控制 worker 机器。具有 worker 角色的机器驱动计算工作负载,这些负载由自动扩展它们的特定机器池管控。因为 OpenShift Container Platform 具有支持多种机器类型的能力,因此 worker 机器被归类为计算 (compute)机器。在此版本中,术语“worker 机器”和“计算机器”可互换使用,因为计算机器的唯一默认类型就是 worker 机器。在未来的 OpenShift Container Platform 版本中,默认情况下可能会使用不同类型的计算机器,如基础架构机器。
3.1.1.2. 集群 master
在 Kubernetes 集群中,master 节点运行控制 Kubernetes 集群所需的服务。在 OpenShift Container Platform 中,master 机器是 control plane。它们不仅仅包含用于管理 OpenShift Container Platform 集群的 Kubernetes 服务。因为所有具有 control plane 角色的机器都是 master 机器,所以 master 和 control plane 是可以互换的术语。master 机器不会被分成一个 MachineSet,而是由一系列独立的机器 API 资源定义。 附加控件应用到 master 机器,以防止您删除所有 master 机器并破坏集群。
注意
使用三个 master 节点虽然理论上可以使用任意数量的 master 节点,但由于 master 静态 Pod 和 etcd 静态 Pod 在相同的主机上工作,所以这个数量会受 etcd 仲裁的限制。
master 上属于 Kubernetes 类别的服务包括 API 服务器、etcd、Controller Manager Server 和 HAProxy 服务。
表 3.1. 在 control plane 上运行的 Kubernetes 服务
组件 描述
API Server Kubernetes API 服务器验证并配置 Pod、服务和复制控制器的数据。它还为集群的共享状态提供一个焦点。
etcd etcd 存储持久 master 状态,其他组件则监视 etcd 的更改,以使其自身进入指定状态。
Controller Manager Server Controller Manager Server 监视 etcd 中对象的更改,如复制、命名空间和服务帐户控制器对象,然后使用 API 强制执行指定的状态。多个这样的过程会创建在某个时间点上有一个活跃群首的集群。
master 机器上的某些服务作为 systemd 服务运行,其他服务则作为静态 Pod 运行。
systemd 服务适合需要始终在特定系统启动后不久出现的服务。对于 master 机器,这包括允许远程登录的 sshd。它还包括以下服务:
• CRI-O 容器引擎 (crio),用于运行和管理容器。OpenShift Container Platform 4.4 使用 CRI-O,而不是 Docker Container Engine。
• Kubelet (kubelet),从 master 服务接受管理机器上容器的请求。
CRI-O 和 Kubelet 必须作为 systemd 服务直接在主机上运行,因为它们必须先运行,然后您才能运行其他容器。
3.1.2. OpenShift Container Platform 中的 Operator
在 OpenShift Container Platform 中,Operator 是在 control plane 上打包、部署和管理服务的首选方法。它们还为用户运行的应用程序提供了便利。Operator 与 Kubernetes API 和 CLI 工具(如 kubectl 和 oc 命令)集成。它们提供了各种方式,以监视应用程序、执行健康检查、管理无线更新,以及确保应用程序保持在指定的状态。
因为 CRI-O 和 Kubelet 在每个节点上运行,所以几乎所有其他集群功能都可以通过使用 Operator 在 control plane 上进行管理。Operator 是 OpenShift Container Platform 4.4 中最重要的组件。使用 Operator 添加到 control plane 的组件包括重要的网络服务和凭证服务。
在 OpenShift Container Platform 集群中管理其他 Operator 的 Operator 是 Cluster Version Operator。
OpenShift Container Platform 4.4 使用不同类型的 Operator 来执行集群操作,并在集群上运行各种服务供您的应用程序使用。
3.1.2.1. OpenShift Container Platform 中的平台 Operator
在 OpenShift Container Platform 4.4 中,所有集群功能都划分到一系列平台 Operator 中。平台 Operator 管理集群功能的特定方面,如集群范围的应用程序日志记录、Kubernetes control plane 管理或机器置备系统。
每个 Operator 都为您提供确定集群功能的简单 API。Operator 将管理组件生命周期的细节隐藏起来。Operator 可以管理一个组件或数十个组件,但最终目标始终是通过自动化常见操作来减轻运维负担。Operator 还提供了更为精细的配置体验。若要配置各个组件,您可以修改 Operator 公开的 API,而不必修改全局配置文件。
3.1.2.2. 由 OLM 管理的 Operator
Cluster Operator Lifecycle Management (OLM) 组件管理可在应用程序中使用的 Operator。它不管理组成 OpenShift Container Platform 的 Operator。OLM 是一个将 Kubernetes 原生应用程序作为 Operator 进行管理的框架。它不管理 Kubernetes 清单,而是管理 Kubernetes Operator。OLM 管理两种 Operator,即 Red Hat Operator 和经认证的 Operator。
一些 Red Hat Operator 用来提供集群功能,如调度程序和问题检测器。其他 Operator 则可供您自助管理并在应用程序中使用,例如 etcd。OpenShift Container Platform 还提供由社区构建和维护并经过认证的 Operator 。这些经过认证的 Operator 为传统应用程序提供 API 层,因此您可以通过 Kubernetes 构造来管理应用程序。
3.1.2.3. 关于 OpenShift Container Platform 更新服务
OpenShift Container Platform 更新服务是一种托管服务,为 OpenShift Container Platform 和 Red Hat Enterprise Linux CoreOS (RHCOS) 提供无线更新 (over-the air update)。它提供了一个组件 Operator 图,其中包含各个顶点及连接它们的边。图中的边显示可以安全更新的版本,顶点是更新有效负载,用于指定托管集群组件的预期状态。
集群中的 Cluster Version Operator (CVO) 会检查 OpenShift Container Platform 更新服务,并根据当前组件版本和图中的信息决定有效的更新和更新路径。当您请求更新时,OpenShift Container Platform CVO 使用该更新的发行镜像来升级您的集群。发行工件 (artifact) 作为容器镜像托管在 Quay 中。
为了使 OpenShift Container Platform 更新服务仅提供兼容的更新,提供了一个版本验证管道来驱动自动化。每个发行工件都会被验证是否与支持的云平台和系统架构以及其他组件包兼容。在管道确认有适用的版本后,OpenShift Container Platform 更新服务会通知您可以进行更新。
重要
因为更新服务会显示所有有效的更新,所以不能强制更新到一个更新服务没有显示的版本。
对于连续更新模式,会运行两个控制器。一个控制器不断更新有效负载清单,将它们应用于集群,并输出受控 Operator 部署的状态(可用、正在进行升级或失败)。第二个控制器轮询 OpenShift Container Platform 更新服务以确定更新是否可用。
重要
不支持将集群还原到以前的版本或执行回滚。仅支持升级到较新版本。
在升级过程中,Machine Config Operator (MCO) 会将新配置应用到集群机器。它将机器配置池中由 maxUnavailable 字段指定数量的节点保护起来,并将其标记为不可用。在默认情况下,这个值被设置为 1。然后,它会应用新配置并重启机器。如果您将 Red Hat Enterprise Linux (RHEL) 机器用作 worker,MCO 不会在这些机器上更新 kubelet,因为您必须首先在这些机器上更新 OpenShift API。因为新版本的规格被应用到旧的 kubelet,所以 RHEL 机器无法返回 Ready 状态。在机器可用前,您无法完成更新。但是,通过设置不可用节点的最大数量可以确保当不可用机器的数量没有超过这个值时,正常的集群操作仍然可以继续进行。
3.1.2.4. 了解 Machine Config Operator
OpenShift Container Platform 4.4 集成了操作系统和集群管理。由于集群管理自己的更新,包括集群节点上 Red Hat Enterprise Linux CoreOS (RHCOS) 的更新,因此 OpenShift Container Platform 提供了可靠的生命周期管理体验,能够简化节点升级的编配。
OpenShift Container Platform 使用三个 DaemonSet 和控制器来简化节点管理。这些 DaemonSet 通过使用标准的 Kubernetes 式构造来编配操作系统更新和主机配置更改。它们包括:
• machine-config-controller,协调从 control plane 进行的机器升级。它监控所有集群节点并编配其配置更新。
• machine-config-daemon DaemonSet,在集群中的每个节点上运行,并按照 MachineConfigController 的指示将机器更新为 MachineConfig 定义的配置。 当节点看到更改时,它将排空其 Pod,应用更新并重启。这些更改以 Ignition 配置文件的形式出现,这些文件应用指定的机器配置并控制 kubelet 配置。更新本身在容器中交付。此过程是成功管理 OpenShift Container Platform 和 RHCOS 更新的关键。
• machine-config-server DaemonSet,在 master 节点加入集群时为其提供 Ignition 配置文件。
机器配置是 Ignition 配置的子集。machine-config-daemon 读取机器配置,以查看是否需要进行 OSTree 更新,或者是否必须应用一系列 systemd kubelet 文件更改、配置更改,或者对操作系统或 OpenShift Container Platform 配置的其他更改。
执行节点管理操作时,您可以创建或修改 KubeletConfig Custom Resource (CR)。

image.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
1063 0
|
前端开发 JavaScript 测试技术
React 分页组件 Pagination
本文介绍了如何在 React 中从零构建分页组件,涵盖基础概念、常见问题及解决方案。通过示例代码详细讲解了分页按钮的创建、分页按钮过多、初始加载慢、状态管理混乱等常见问题的解决方法,以及如何避免边界条件、性能优化和用户反馈等方面的易错点。旨在帮助开发者更好地理解和掌握 React 分页组件的开发技巧,提升应用的性能和用户体验。
403 2
|
安全 前端开发 iOS开发
揭秘 electron-builder:macOS 应用打包背后到底发生了什么?
本文详细介绍了 Electron 应用在 macOS 平台上的打包流程,涵盖配置文件、打包步骤、签名及 notarization 等关键环节。通过剖析 `electron-builder` 的源码,展示了如何处理多架构应用、执行签名,并解决常见问题。适合希望深入了解 macOS 打包细节的开发者。
578 2
|
存储 Kubernetes 负载均衡
深入探讨Docker生态系统,Docker Compose vs. Docker Swarm vs. Kubernetes:深入比较
Kubernetes适用于大规模、复杂应用程序和多云部署,具有高度可定制的部署配置和广泛的生态系统。 在选择时,还可以考虑将它们组合使用,以满足不同环境和需求。无论选择哪个工具,容器编排都将成为现代应用程序开发和部署的不可或缺的一部分。
1735 0
|
SQL 存储 关系型数据库
精通MySQL:从基础到高级应用
第一章:MySQL入门 1.1 MySQL简介 介绍MySQL的历史、特点以及它作为关系型数据库管理系统(RDBMS)的优势
|
C# Windows
一款.NET开源、简洁易用的Windows桌面小说阅读应用
一款.NET开源、简洁易用的Windows桌面小说阅读应用
370 5
|
存储 Kubernetes 监控
全面解析容器编排技术 Kubernetes
容器编排是指对多个容器的部署,管理和监控。
全面解析容器编排技术 Kubernetes
|
缓存 安全 Unix
深入探索Linux中的qemu-ga命令
**QEMU的qemu-ga是虚拟机内的守护进程,提供带外通道管理guest OS,如文件操作、关机、休眠等。它通过virtio-serial通信,特点是安全、高效、灵活。例如,使用`virsh qemu-agent-command`执行虚拟机内部命令。最佳实践包括安装配置agent、设置黑名单、考虑安全和性能、定期备份及利用社区资源。**
|
消息中间件 负载均衡 Kubernetes
k8s-服务(clusterIP/NodePort/LoadBanlance)
clusterIP 类型的服务 NodePort 类型的服务 LoadBanlance 类型的服务
k8s-服务(clusterIP/NodePort/LoadBanlance)
|
JSON 数据格式
将json格式的数据快速转换为excel,使用在线工具轻松搞定
将json格式的数据快速转换为excel,使用在线工具轻松搞定
891 0
下一篇
oss云网关配置