Kubernetes控制器与Kubernetes运营商?

问题描述 投票:29回答:2

据我所知,Kubernetes控制器的目的是确保当前状态等于所需状态。尽管如此,Kubernetes运营商也做了同样的工作。

控制平面中的控制器列表:

  • 部署
  • ReplicaSet
  • StatefulSet
  • DaemonSet
  • 等等

从谷歌搜索,我发现有K8s运营商,如

  • etcd运营商
  • 普罗米修斯运营商
  • kong运营商

但是,我无法理解为什么使用Controller无法完成?

运营商是否补充了控制器?

这两个设计作为目的和功能之间的区别是什么。

在控制器和操作员之间进行选择需要注意哪些事项? ?

kubernetes
2个回答
32
投票

我相信the CoreOS people here引入了“kubernetes operator”这个术语

Operator是一个特定于应用程序的控制器,它扩展了Kubernetes API,以代表Kubernetes用户创建,配置和管理复杂有状态应用程序的实例。它建立在基本的Kubernetes资源和控制器概念的基础上,还包括域或特定于应用程序的知识,以自动执行由计算机更好地管理的常见任务。

基本上,kubernetes运算符是一个模式的名称,该模式由kubernetes控制器组成,该控制器向Kubernetes API添加新对象,以便配置和管理应用程序,如Prometheus或etcd。

用一句话:运算符是特定于域的控制器。

更新

有关于这个相同主题的a new discussion on Github,链接到同一篇博文。讨论的相关部分是:

所有操作员都使用控制器模式,但并非所有操作员都是操作员。它只是一个运算符,如果它有:控制器模式+ API扩展+单应用程序焦点。

Operator是一个带CRD的自定义控制器工具。它与内置控制器(即手表,差异,动作)遵循相同的模式。


1
投票

在Kubernetes中,大多数操作都是以异步方式进行的。

例如,当一个人创建一个ReplicaSet对象(选择一个更简单的对象)时,这就是发生的序列:

  1. 我们将请求发送到Kube api-server。
  2. kube-api服务器具有复杂的验证 确保用户具有RBAC凭据以在给定命名空间中创建RS 所有配置的准入控制器都会验证该请求
  3. 最后,该对象刚刚写入ETCD - 仅此而已

现在,各种Kubernetes控制器负责观察ETCD变化并实际执行必要的操作。在这种情况下,ReplicaSet控制器将监视ETCD中的更改(例如ReplicataSets的CRUD),并根据副本计数等创建Pod。

现在,来到运营商,概念上它们与Kubernetes控制器非常相似。但它们与第三方实体一起使用。在Kubernetes中,有一个CRD概念,供应商可以定义自己的CRD,这只是一个自定义(例如特定于供应商)kubernetes对象类型。与Kubernetes控制器读取Kubernetes对象的CRUD的方式非常相似,这些运算符响应相应CRD上的操作。例如。当在Kubernetes集群中创建新的API CRD对象时,Kong运算符可以在Kong API服务器中创建新的API条目。

© www.soinside.com 2019 - 2024. All rights reserved.