什么是 Kubernetes 控制器和操作器?

在这里插入图片描述
Kubernetes 术语“控制器”和“操作员”是指将集群转换为所需状态的两种不同模式。控制器是一个既定的概念,而运算符是最近出现的,用于描述特定于应用程序的控制器。

控制回路

Kubernetes 集群在控制回路上运行。您可以通过编写和应用 YAML 清单来定义集群应该做什么。集群内的控制器检测请求的更改并采取措施调整状态。这是在您提交新清单后异步发生的。

控制器负责监控集群的资源,评估它们是否偏离了定义的状态,并进行任何必要的调整以使它们重新对齐。它们是完全自动化的组件,无需干预即可运行。

生态系统中存在多种控制器。一些在集群级别运行,而另一些则管理您的工作负载。你在你的清单定义日常Kubernetes资源可以是控制器:Deployment,ReplicaSet,和类似的例子满足控制器的定义。他们负责嵌套对象以维护用户定义的副本计数。

什么是控制器?

控制器是集群内至少跟踪一种其他 Kubernetes 资源类型的任何东西。控制器可以是被动的或主动的。主动控制者将自行实施必要的行动;被动的会将更改传达给其他组件或集群 API 服务器。

由于控制器的角色是有意抽象的,因此除了对特定对象的监视之外,它们没有其他通用功能。您可以使用一个控制器来自动删除带有eligible-for-autodelete注释的Pod 。

在 Kubernetes 中,控制器只是实现自动化控制循环功能的一种模式。单个控制器将具有独特的用途和特征,但它们将始终监视集群的对象或配置。

运营商呢?

操作员是一种特殊形式的控制器。操作符实现了控制器模式,这意味着他们将集群移动到一个定义的状态,但他们也拥有一些额外的特征。该术语最初由 CoreOS创造,但现在也被Kubernetes更广泛地采用。

运算符是为特定应用量身定制的。他们通过自定义资源定义添加 Kubernetes API 扩展,创建由他们管理的应用程序使用的新对象类型。

几个流行的社区应用程序现在都有自己的运营商。这些使在集群中安装、配置和维护托管软件变得更加容易。etcd、Fluentd、Prometheus和许多其他通常启动到集群中的关键项目都有操作符。

这些工作负载可能很复杂,并且由多个单独的组件组成。它们可能包含需要在整个安装生命周期内进行管理的特定于应用程序的逻辑。

操作员概念提供了一种使用与常规控制器相同的原理来监控这些应用程序的方法。操作员只是一个专门的控制器,它使用自定义资源将特定应用程序移动到正确的用户定义状态。

您通常通过在自定义资源中提供配置数据来配置运算符。操作员使用其对应用程序的了解将该数据转换为集群中的特定操作。这些操作将组装与配置资源中定义的状态相匹配的应用程序的正常安装。

运算符有什么用?

由于运算符是特定于域的,因此每个运算符都将包含不同的功能。通常,您可以期望运营商提供以下一些功能:

自动监控和警报——操作员通常知道他们的应用程序何时无法正常工作并生成适当的警报。

随着时间的推移自动版本升级——运营商通常能够自动应用集群更改以安装可用的新应用程序更新。这显着减轻了运维团队的维护负担。

安装自定义资源——操作员将应用程序的自定义资源添加到 Kubernetes API 服务器,准备集群来承载工作负载。

提供自动缩放——具有特定领域知识的操作员可以识别何时配置的副本计数太低而无法舒适地为当前流量提供服务并启动新实例以保持性能。

生命周期管理——运营商确保新的应用程序实例启动到已经满足所有先决条件的环境中。他们还将在副本停止后执行任何所需的清理工作。

存储管理和备份——一些运营商协助建立持久性存储。当他们了解他们的应用程序时,他们也可能在应用潜在的破坏性操作之前进行备份。

在部署新工作负载之前从头开始组装所有这些功能将是复杂且难以维护的。Operator 允许您使用供应商批准的自我管理和 Kubernetes 原生策略将复杂系统启动到集群中。

在提供它们的一些应用程序中,可以清楚地观察到操作符的好处。GitLab 版本控制软件是一个复杂的组件堆栈,但其操作员提供全自动自动缩放、滚动升级和备份,以及使用 Prometheus 和 Grafana 的度量可视化堆栈。当您将操作员添加到集群时,一切就可以使用了。

另一个操作符是MongoDB:它提供了一种完全托管的方式,可以从您定义的一组规范中配置存储、数据库、用户和 Mongo 设置。然后,操作员相应地配置您的集群以支持您的数据库工作负载。

您可以通过使用Kubernetes 客户端库之一创建控制器来编写自己的运算符。Operator 是通过使用 Kubernetes REST API 开发的,用于查询集群及其对象并与之交互。

结论

Controllers 和 Operators 是 Kubernetes 术语,用于描述监控资源并应用操作来修改集群状态的控制平面组件。控制器关注 Kubernetes 级别的操作,而操作者拥有特定于域的逻辑,并针对单个应用程序量身定制。

如果您使用操作员安装应用程序,则意味着您正在添加一个组件,该组件将监视该安装、检查其是否正常工作,并自动进行更新或配置更改的状态转换。尽管 Helm charts 已经解决了部署应用程序及其依赖项的挑战,但运维人员更进一步:它们由应用程序的供应商提供,对工作负载的要求有复杂的了解,并在整个生命周期内保持对安装的责任。

随着更复杂的有状态应用程序开始提供运营商,运营商的可见性可能会继续增长。自动化维护、“第二天”任务和升级有助于减轻紧张的运营团队的负担,并使新来者更容易启动和运行生产就绪部署。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mikes zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值