到目前为止,我在CRDs上工作过一段时间。最近,我的一个同事声称,自定义资源最终只会管理pod。这是真的吗?你也可以为服务或配置图做CRD吗?
q5iwbnjs1#
自定义资源 definition 并不管理任何内容,它只是一个特定API组、版本和种类的定义(如Kubernetes清单顶部所示),不属于标准Kubernetes API的一部分。如果您安装了CRD,则可以kubectl get customtypename并运行类似的命令,但创建其中一个对象实际上不会发生任何事情。典型operator pattern的另一部分是Kubernetes controller,这是一个通常在集群内运行的程序,它使用Kubernetes API执行一些操作。一个控制器可以读写 * 任何 * Kubernetes资源;例如,您可以创建一个ConfigMap来响应自定义资源的更改,或者在自定义资源中引用ConfigMap,然后将这两个数据组合起来以调用某个外部API。
kubectl get customtypename
pcww981p2#
CRD用于创建、存储和公开Kubernetes API对象,但也可用于其他目的。CRD还可用于创建服务和配置的自定义资源。例如,服务的CRD,
apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: service-crd spec: group: mycompany.com version: v1 scope: Namespaced names: kind: Service plural: services
上面的yaml将指定一个名为service-crd的CRD,它可用于创建和管理mycompany.com。有了这个自定义资源定义,您就可以使用API来创建、更新和删除服务。可以使用CRD将mount a config map转换为自定义对象。而配置Map更适合在kubernetes中存储非机密信息。如果需要存储更复杂的数据结构,请使用CRD。如需了解更多信息,请访问blog by Dawid Ziolkowski。
2条答案
按热度按时间q5iwbnjs1#
自定义资源 definition 并不管理任何内容,它只是一个特定API组、版本和种类的定义(如Kubernetes清单顶部所示),不属于标准Kubernetes API的一部分。如果您安装了CRD,则可以
kubectl get customtypename
并运行类似的命令,但创建其中一个对象实际上不会发生任何事情。典型operator pattern的另一部分是Kubernetes controller,这是一个通常在集群内运行的程序,它使用Kubernetes API执行一些操作。
一个控制器可以读写 * 任何 * Kubernetes资源;例如,您可以创建一个ConfigMap来响应自定义资源的更改,或者在自定义资源中引用ConfigMap,然后将这两个数据组合起来以调用某个外部API。
pcww981p2#
CRD用于创建、存储和公开Kubernetes API对象,但也可用于其他目的。CRD还可用于创建服务和配置的自定义资源。例如,服务的CRD,
上面的yaml将指定一个名为service-crd的CRD,它可用于创建和管理mycompany.com。有了这个自定义资源定义,您就可以使用API来创建、更新和删除服务。
可以使用CRD将mount a config map转换为自定义对象。而配置Map更适合在kubernetes中存储非机密信息。如果需要存储更复杂的数据结构,请使用CRD。
如需了解更多信息,请访问blog by Dawid Ziolkowski。