K8S/Kubernetes 云计算-k8s中的自定义资源以及crd
cover

云计算-k8s中的自定义资源以及crd

CRD是一段申明,用于定义用户自定义的资源对象,它需要提供管理CRD对象的CRD控制器才能实现。主要用于扩展Kubernetes 的 API,向 Kubernetes API 中增加新类型。详细参考https://kubernetes.io/zh-cn/docs/tasks/extend-kubernetes/cust...

egzosn  ·  2024-07-19 17:27:36 发布

CRD是一段申明,用于定义用户自定义的资源对象,它需要提供管理CRD对象的CRD控制器才能实现。主要用于扩展 Kubernetes 的 API,向 Kubernetes API 中增加新类型。

详细参考

 https://kubernetes.io/zh-cn/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ 

创建CRD

创建新的 CustomResourceDefinition(CRD)时,Kubernetes API Server 会为您指定的每个版本创建新的 RESTful 资源路径。CRD 可以是命名空间的,也可以是集群范围的,可以在 CRD scope 字段中所指定。与现有的内置对象一样,删除命名空间会删除该命名空间中的所有自定义对象。CustomResourceDefinition 本身是非命名空间的,可供所有命名空间使用。

#resourcedefinition.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  # 名称必须符合下面的格式:<plural>.<group>
  name: crontabs.stable.example.com
spec:
  # REST API使用的组名称:/apis/<group>/<version>
  group: stable.example.com
  # REST API使用的版本号:/apis/<group>/<version>
  versions:
    - name: v1
      # 可以通过 served 来开关每个 version
      served: true
      # 有且仅有一个 version 开启存储
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                image:
                  type: string
                replicas:
                  type: integer
  # Namespaced或Cluster
  scope: Namespaced
  names:
    # URL中使用的复数名称: /apis/<group>/<version>/<plural>
    plural: crontabs
    # CLI中使用的单数名称
    singular: crontab
    # CamelCased格式的单数类型。在清单文件中使用
    kind: CronTab
    # CLI中使用的资源简称
    shortNames:
    - ct
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.

字段说明

  • group 设置api所属的组,将其映射为API URL中/apis/的下一级目录
  • scpoe 该API的生效范围,可选项为Namespaced,和cluster,默认为Namespaced
  • version,设置支持的版本,可设置多个版本
  • name 版本的名称
  • serverd 是否启用,true表示启用
  • storage 是否存储,只有一个版本能被设置为true
  • names crd的名称

创建

kubectl create-f resourcedefinition.yaml
  • 1.

访问 RESTful API 端点如  http://172.20.0.113:8080 将看到如下 API 端点已创建:

创建自定义对象

创建 CustomResourceDefinition 对象后,您可以创建自定义对象。自定义对象可包含自定义字段。这些字段可以包含任意 JSON。在以下示例中, cronSpec 和 image 自定义字段在自定义对象中设置 CronTab。CronTab 类型来自您在上面创建的 CustomResourceDefinition 对象的规范

#my-crontab.yaml
apiVersion: "stable.example.com/v1"
kind: CronTab
metadata:
  name: my-new-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-awesome-cron-image
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

创建

kubectl create-f my-crontab.yaml
  • 1.

检查对象

kubectl get crontab
kubectl get ct-o yaml
  • 1.
  • 2.

云计算-k8s中的自定义资源以及crd_命名空间

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐

  • 浏览量 492
  • 收藏 0
  • 0

所有评论(0)

查看更多评论 
已为社区贡献11条内容