Kubernetes Operator(Operator SDK、Kubebuilder VERSUS Kubernetes 客户端库)

Kubernetes Operator (Operator SDK, Kubebuilder VERSUS Kubernetes Client Libraries)

如果这个问题已经得到回答,我很抱歉,但在尝试了许多不同的谷歌搜索方法后,我未能得到明确的解释,所以我试图在这里寻求澄清。

我熟悉 Kubernetes 上下文中的 operator/controller 模式,我正在尝试使用来自Kubernetes.io.

在网上研究时,我遇到了 OperatorSDK 和 Kubebuilder,它们似乎是可以 bootstrap operators/controllers 的工具,提供许多与 K8s Api 服务器接口的功能,就像Kubernetes 客户端库。

OperatorSDK 和 Kubebuilder 似乎不仅仅是库 所以这是我的问题

  1. OperatorSDK、Kubebuilder 和来自 Kubernetes.io[=28= 的 Kubernetes 客户端库 之间有什么区别]
  2. Kubernetes 客户端库是否实现了 OperatorSDK 和 Kubebuilder 之类的东西?
  3. 我是否需要使用 OperatorSDK 或 Kubebuilder 来实现我自己的控制器,因为据我所知,Kubernetes 客户端库似乎就足够了。

What are the differences between the likes of OperatorSDK, Kubebuilder AND Kubernetes Client libraries from Kubernetes.io

OperatorSDK、Kubebuilder 是专门的,它们通过生成在 kubernetes 中实现控制器所需的样板代码和运行时(通过控制器运行时)为您提供良好的起点。客户端库是生成目的库来做任何事情,例如与 Kubernetes API 服务器等交互

Are the Kubernetes Client Libraries implementations of things like the OperatorSDK and Kubebuilder?

没有。实际上 OperatorSDK ,引擎盖下的 Kubebuilder 使用 controller runtime 它在内部使用 kubernetes 客户端库与 Kubernetes API 服务器交互。

Do I need to use the OperatorSDK or Kubebuilder to implement my own controller because, as far as I can tell, the Kubernetes client library seems to suffice.

如果您只使用 kubernetes 客户端库,您最终将编写一些样板代码和模式,这些代码和模式已经由 OperatorSDK 和 Kubebuilder 或控制器运行时提供。强烈推荐但不强制使用 OperatorSDK 或 Kubebuilder 编写控制器。您也可以直接使用控制器运行时,而不是使用 OperatorSDK 或 Kubebuilder。