【问题标题】:How does kubectl configure CRDs?kubectl 如何配置 CRD?
【发布时间】:2023-04-09 20:14:02
【问题描述】:
【问题讨论】:
标签:
go
kubernetes
kubernetes-apiserver
kubernetes-go-client
kubernetes-custom-resources
【解决方案1】:
首先让我们了解一下 CRD 是什么。
CustomResourceDefinition API 资源允许您定义自定义资源。定义 CRD 对象会创建一个具有您指定的名称和架构的新自定义资源。 Kubernetes API 提供并处理您的自定义资源的存储。 CRD 对象的名称必须是有效的DNS subdomain name。
这使您无需编写自己的 API 服务器来处理自定义资源,但实现的通用性意味着您的灵活性不如 API server aggregation。
为什么要创建Custom Resources:
资源 是Kubernetes API 中的一个端点,用于存储某种API objects 的集合。例如,内置的 pods 资源包含 Pod 对象的集合。
自定义资源是 Kubernetes API 的扩展,在默认 Kubernetes 安装中不一定可用。它表示对特定 Kubernetes 安装的自定义。但是,现在许多核心 Kubernetes 功能都是使用自定义资源构建的,这使得 Kubernetes 更加模块化。
自定义资源可以通过动态注册在正在运行的集群中出现和消失,并且集群管理员可以独立于集群本身更新自定义资源。安装自定义资源后,用户可以使用 kubectl 创建和访问其对象,就像他们对 Pods 等内置资源所做的那样。
所以要回答您的问题,如果您需要 Kubernetes 中缺少的功能,您需要使用 CRD 自己创建它。没有它,集群将不知道您想要什么以及如何获得它。
如果您正在寻找 Kubernetes Client-go 的使用示例,您可以在官方 GitHub Client-go/examples 上找到它们