k8s中自定资源(CRD)的使用

创建自定义API对象(CRD:Custom Resource Definition)

名Installment

  1. 通过官方文档了解CRD的定义:
    https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#create-a-customresourcedefinition
  2. 创建自己CRD, install.yaml 其内容如下:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  # metadata.name的内容是由"复数名.分组名"构成,如下,installments是复数名,uihcloud.cn是分组名
  name: installments.uihcloud.cn
spec:
  # 分组名,在REST API中也会用到的,格式是: /apis/分组名/CRD版本
  group:  uihcloud.cn
  # list of versions supported by this CustomResourceDefinition
  versions:
    - name: v1
      # 是否有效的开关.
      served: true
      # 只有一个版本能被标注为storage
      storage: true
  # 范围是属于namespace的
  scope: Namespaced
  names:
    # 复数名
    plural: installments
    # 单数名
    singular: installment
    # 类型名
    kind: Installment
    # 简称,就像service的简称是svc
    shortNames:
    - inst
  1. 将CRD 写入k8s 的存储,并查看创建的 crd
kubectl  apply  -f install.yaml
kubectl  get  crd
kubectl  describe  crd inst
image.png
  1. 创建Installmens 的自定义对象 cgs-installer.yaml
apiVersion:  uihcloud.cn/v1
kind: Installment
metadata:
  name: cgs-installer
spec:
  name: "cgs"
  chart_path: "http://chartrepos/cgs-1.0.tgz"
  image_path: "http://chartrepos/cgs.tar"
  1. 将Installmens 对象写入k8s 的存储,并查看
kubectl  apply  -f cgs-installer.yaml
kubectl  get  inst
kubectl  get  inst -o yaml
image.png

至此,k8s自定资源(也就是CRD)就创建成功了,此刻我们只是让k8s能识别到Installment,但是当我们创建Installment对象的时候,只是做了存储,还没有触发任何逻辑操作(比如内建资源创建Pod对象的时候,会触发选择节点,并在节点创建容器),这就是后面对应的controller的要做事情。

你可能感兴趣的:(k8s中自定资源(CRD)的使用)