0

我的 kubernetes 集群中已经定义了一些 CRD。 kubectl可以很好地创建/更新/删除资源。

当我尝试使用程序进行这些操作时,我通过搜索找到的方法是使用以下工具生成代码:

https://github.com/kubernetes/code-generator

我想知道为什么kubectl可以在不为 CRD 生成代码的情况下开箱即用。

是否需要生成代码才能添加或删除 CRD 资源?

谢谢!

4

1 回答 1

0

首先让我们了解一下 CRD 是什么。

CustomResourceDefinition API 资源允许您定义自定义资源。 定义 CRD 对象会创建一个具有您指定的名称和架构的新自定义资源。Kubernetes API 提供并处理您的自定义资源的存储。CRD 对象的名称必须是有效的 DNS 子域名

这使您无需编写自己的 API 服务器来处理自定义资源,但实现的通用性意味着您的灵活性低于 API 服务器聚合

为什么要创建自定义资源

资源Kubernetes API中的 一个端点, 用于存储某种 API 对象 的集合。例如,内置的 pods 资源包含 Pod 对象的集合。

定义资源 是 Kubernetes API 的扩展,在默认 Kubernetes 安装中不一定可用。它表示对特定 Kubernetes 安装的自定义。但是,现在许多核心 Kubernetes 功能都是使用自定义资源构建的,这使得 Kubernetes 更加模块化。

自定义资源可以通过动态注册在正在运行的集群中出现和消失,并且集群管理员可以独立于集群本身更新自定义资源。安装自定义资源后,用户可以使用 kubectl创建和访问其对​​象,就像对 Pods等内置资源所做的那样。

因此,要回答您的问题,如果您需要 Kubernetes 中缺少的功能,您需要使用 CRD 自己创建它。没有它,集群将不知道您想要什么以及如何获得它。

如果您正在寻找 Kubernetes Client-go 的使用示例,您可以在官方GitHub Client-go/examples 上找到它们

于 2020-03-31T10:15:35.390 回答