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

KSh*_*eng 9 kubernetes kubernetes-operator operator-sdk

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

我熟悉 Kubernetes 上下文中的操作员/控制器模式,并且正在尝试构建一个自定义 NodeJS 控制器,该控制器使用Kubernetes.io中的 NodeJS Kubernetes 客户端库之一来处理我自己的自定义资源 (CRD) 。

在网上研究时,我遇到了 OperatorSDK 和 Kubebuilder,它们似乎是可以引导操作员/控制器的工具,提供与 K8s Api 服务器接口的许多功能,就像 Kubernetes 客户端库一样。

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

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

Arg*_*dhu 9

OperatorSDK、Kubebuilder 和 Kubernetes.io 的 Kubernetes 客户端库之间有什么区别

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

Kubernetes 客户端库是否实现了 OperatorSDK 和 Kubebuilder 之类的东西?

不。实际上 OperatorSDK 和 Kubebuilder 在底层使用控制器运行时,它在内部使用 kubernetes 客户端库与 Kubernetes API 服务器交互。

我是否需要使用 OperatorSDK 或 Kubebuilder 来实现我自己的控制器,因为据我所知,Kubernetes 客户端库似乎就足够了。

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