企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] CRD + Operator是kubernetes扩展能力核心。假设我们想开发一个CRD + Operator,它的CR如下: ``` apiVersion: ccse.io/v1 kind: KubernetesCluster metadata: name: cluster1 spec: etcd: 3 kube-apiserver: 2 kube-controller-manager: 2 kube-scheduler: 2 ``` 当Operator监听到上面的CR时,就会在k8s集群中创建一个3个实例的etcd集群,2个kube-apiserver的Pod,2个kube-controller-manager的Pod和2个kube-scheduler的Pod。 那么,CRD应该如何定义呢?如下: ``` apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: kubernetesclusters.ccse.io spec: group: ccse.io names: kind: KubernetesCluster plural: kubernetesclusters singular: kubernetescluster scope: Cluster versions: - name: v1 storage: true served: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: etcd: type: integer kube-apiserver: type: integer kube-scheduler: type: integer kube-controller-manager: type: integer additionalPrinterColumns: - name: etcd jsonPath: .spec.etcd type: integer - name: kube-apiserver jsonPath: .spec.kube-apiserver type: integer ``` 然后我们创建它 ``` $ kubectl apply -f crd.yaml customresourcedefinition.apiextensions.k8s.io/kubernetesclusters.ccse.io created ``` 然后我们再创建文章开头的那个CR ``` $ kubectl apply -f cr.yaml kubernetescluster.ccse.io/cluster1 created ``` 然后我们查看创建的kubernetescluster对象 ``` $ kubectl get kubernetescluster NAME ETCD KUBE-APISERVER cluster1 3 2 ``` ### **Reference** * https://blog.csdn.net/weixin_44100171/article/details/108889151