海螺集团网站建设招标公告,大型企业网站源码,专门做设计的网站,自己主机做多个网站一、CRD概述
Kubernetes中将一切都视为资源#xff0c;资源是Kubernetes API中的一个Endpoint#xff0c;存储了某种类型的API对象#xff0c;例如Pod、Deployment、Configmap、Volume等都是一种资源#xff0c;不过这些都属于内置资源#xff0c;是Kubernetes默认提供的…一、CRD概述
Kubernetes中将一切都视为资源资源是Kubernetes API中的一个Endpoint存储了某种类型的API对象例如Pod、Deployment、Configmap、Volume等都是一种资源不过这些都属于内置资源是Kubernetes默认提供的资源类型在Kubernetes V1.7之后提供了一种自定义资源代表某种自定义的配置或者独立运行的服务这种自定义资源类型就是CRDCustomerResourceDefinition。
Kubernetes之CRD是一种强大的扩展机制允许用户自定义新的资源类型就是为了满足Kubernetes自身不具备的一些功能可以通过CRD保证新的资源快速的注册和使用可以把CRD理解成两部分Customer Resource和Customer ControllerCustomer Resource可以让用户简单的存储和获取结构化数据将这种对象动态的注册到Kubernetes集群中。而Customer Controller可以把上面自定义的资源更新成用户想要的状态。
例如腾讯云TKE使用CRDlogcollectors.ccs.cloud.tencent.com以添加日志收集服务而Istio也大量使用到了CRD。 二、CRD的使用场景
1. 提供、管理外部数据存储因为Customer Resource就是一种存在Etcd中的数据结构你可以将外部数据存储到Etcd中而不使用单独的数据库用Kubernetes的声明式API去管理他的生命周期。
2. 对Kubernetes的基础资源进行更高层次的抽象例如一些自定义控制器你既可以管理自定义的资源状态也可以改变Kubernetes原有资源如Ingress-controller。 三、如何定义CRD
1、创建CRD步骤
定义CRD的规范包括资源名称、API版本、字段等。使用kubectl或其他Kubernetes API工具创建自定义资源。 2、定义CRD
a、定义CRD规范
创建一个名为“my-crd-definition.yaml”的文件并添加以下内容
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata: name: my-crds.my-group.example.com
spec: group: my-group.example.etcdctl.io version: v1alpha1 scope: Cluster names: plural: my-crds singular: my-crd kind: MyCrd shortNames: - mycrd
在这个规范中我们定义了一个名为“my-crds”的自定义资源其API版本为“v1alpha1”并且定义了该资源的字段和属性。 b、创建CRD
使用kubectl或其他Kubernetes API工具来创建自定义资源。例如使用以下命令来创建上述定义的CRD
kubectl apply -f my-crd-definition.yaml
一旦创建成功就可以像操作其他Kubernetes资源一样来操作这个自定义资源了。例如使用以下命令来列出所有的“my-crds”资源
kubectl get my-crds