Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes控制器和Kubernetes运算符之间的区别是什么?_Kubernetes - Fatal编程技术网

Kubernetes控制器和Kubernetes运算符之间的区别是什么?

Kubernetes控制器和Kubernetes运算符之间的区别是什么?,kubernetes,Kubernetes,据我所知,Kubernetes控制器的目的是确保当前状态等于所需状态。然而,Kubernetes算子也做同样的工作 控制平面中的控制器列表: 部署 复制集 状态集 守护程序 等 通过谷歌搜索,我发现有K8s运营商,比如 etcd操作员 普罗米修斯操作员 香港运营商 然而,我无法理解为什么不能使用控制器来完成 操作员是否补充控制器 这两种设计的目的和功能有什么不同 在控制器和操作员之间选择时,需要记住哪些事项 我相信术语“kubernetes算子”是由 操作员是一个特定于应用程序的控制器,

据我所知,Kubernetes控制器的目的是确保当前状态等于所需状态。然而,Kubernetes算子也做同样的工作

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

  • 部署
  • 复制集
  • 状态集
  • 守护程序
通过谷歌搜索,我发现有K8s运营商,比如

  • etcd操作员
  • 普罗米修斯操作员
  • 香港运营商
然而,我无法理解为什么不能使用控制器来完成

操作员是否补充控制器

这两种设计的目的和功能有什么不同

在控制器和操作员之间选择时,需要记住哪些事项

我相信术语“kubernetes算子”是由

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

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

一句话:操作符是特定于域的控制器

更新 有关于这个非常相同的主题,链接到相同的博客帖子。讨论的相关内容包括:

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

操作员是使用CRD实现的自定义控制器。它遵循与内置控制器相同的模式(即监视、差异、动作)

更新2
我发现这也试图解释这种差异。

在Kubernetes中,大多数操作以异步方式发生

例如,当创建一个ReplicaSet对象(拾取一个更简单的对象)时,发生的顺序如下:

  • 我们将请求发送到Kube api服务器
  • kube api服务器具有复杂的验证
    • 确保用户具有在给定命名空间中创建RS的RBAC凭据
    • 该请求由所有配置的准入控制器验证
  • 最后,该对象刚刚写入ETCD——仅此而已
  • 现在,各个Kubernetes控制器负责观察ETCD的变化并实际执行必要的操作。在这种情况下,ReplicateSet控制器将监视ETCD中的变化(例如ReplicateSet的CRUD),并根据副本计数等创建POD


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

    谢谢您的回答。因此控制器是通用的,而操作员是专用的。如果我错了,请纠正我。为什么为特定目的实施控制器不是一个好主意?我不明白这里“通用”和“特定目的”是什么意思。操作员是控制器。只是当控制器添加新的k8s对象来存储prometheus或memcached等组件的配置时,它们使用了操作符这个术语。控制器通常只是监视和响应本机k8s对象。如果您认为它回答了问题,请接受答案!我诚恳地道歉,我正试图找出一种写作方式来把我的问题放在这个场景中。我仍然不相信在k8s集群中有两种不同的方法来完成同一组任务。很快我会更新你。更新的答案有更多的人对这个问题的看法。非常整洁和优雅的答案。不过,如果你能在第二段中多加一点,请。可能是一个例子。