×

本指南介绍开发人员如何管理来自自定义资源定义 (CRD) 的自定义资源 (CR)。

自定义资源定义

在 Kubernetes API 中,资源是指存储特定种类 API 对象集合的端点。例如,内置的Pods资源包含Pod对象的集合。

自定义资源定义 (CRD) 对象定义了集群中一种新的、唯一的对象类型(称为种类),并允许 Kubernetes API 服务器处理其整个生命周期。

自定义资源 (CR) 对象是由集群管理员添加到集群的 CRD 创建的,允许所有集群用户将新的资源类型添加到项目中。

特别是,操作员通过将 CRD 与任何必需的 RBAC 策略和其他特定于软件的逻辑打包在一起而使用它们。

从文件创建自定义资源

将自定义资源定义 (CRD) 添加到集群后,可以使用 CLI 从文件使用 CR 规范创建自定义资源 (CR)。

步骤
  1. 为 CR 创建一个 YAML 文件。在下面的示例定义中,cronSpecimage自定义字段设置在Kind: CronTab的 CR 中。Kind来自 CRD 对象的spec.kind字段

    CR 的示例 YAML 文件
    apiVersion: "stable.example.com/v1" (1)
    kind: CronTab (2)
    metadata:
      name: my-new-cron-object (3)
      finalizers: (4)
      - finalizer.stable.example.com
    spec: (5)
      cronSpec: "* * * * /5"
      image: my-awesome-cron-image
    1 指定来自 CRD 的组名和 API 版本(名称/版本)。
    2 指定 CRD 中的类型。
    3 为对象指定一个名称。
    4 指定对象的终结器(如有)。终结器允许控制器实现必须在删除对象之前完成的条件。
    5 指定特定于对象类型的条件。
  2. 创建文件后,创建对象

    $ oc create -f <file_name>.yaml

检查自定义资源

可以使用 CLI 检查集群中存在的自定义资源 (CR) 对象。

先决条件
  • CR 对象存在于您有权访问的命名空间中。

步骤
  1. 要获取有关特定 CR 种类的信息,请运行

    $ oc get <kind>

    例如

    $ oc get crontab
    示例输出
    NAME                 KIND
    my-new-cron-object   CronTab.v1.stable.example.com

    资源名称不区分大小写,您可以使用 CRD 中定义的单数或复数形式,以及任何简短名称。例如

    $ oc get crontabs
    $ oc get crontab
    $ oc get ct
  2. 您还可以查看 CR 的原始 YAML 数据

    $ oc get <kind> -o yaml

    例如

    $ oc get ct -o yaml
    示例输出
    apiVersion: v1
    items:
    - apiVersion: stable.example.com/v1
      kind: CronTab
      metadata:
        clusterName: ""
        creationTimestamp: 2017-05-31T12:56:35Z
        deletionGracePeriodSeconds: null
        deletionTimestamp: null
        name: my-new-cron-object
        namespace: default
        resourceVersion: "285"
        selfLink: /apis/stable.example.com/v1/namespaces/default/crontabs/my-new-cron-object
        uid: 9423255b-4600-11e7-af6a-28d2447dc82b
      spec:
        cronSpec: '* * * * /5' (1)
        image: my-awesome-cron-image (1)
    
    1 显示您用于创建对象的 YAML 中的自定义数据。