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
本指南介绍开发人员如何管理来自自定义资源定义 (CRD) 的自定义资源 (CR)。
在 Kubernetes API 中,资源是一个端点,用于存储特定类型的一组 API 对象。例如,内置的Pods
资源包含一组Pod
对象。
自定义资源定义 (CRD) 对象定义了一种新的、唯一的对象类型(称为kind)在集群中,并允许 Kubernetes API 服务器处理其整个生命周期。
自定义资源 (CR) 对象是从已由集群管理员添加到集群的 CRD 创建的,允许所有集群用户将新的资源类型添加到项目中。
特别是,操作符通过将其与任何所需的 RBAC 策略和其他特定于软件的逻辑一起打包来使用 CRD。集群管理员还可以手动将 CRD 添加到集群中,而不依赖于操作符的生命周期,从而使所有用户都可以使用它们。
虽然只有集群管理员才能创建 CRD,但如果开发人员具有对其的读写权限,他们可以从现有的 CRD 创建 CR。 |
将自定义资源定义 (CRD) 添加到集群后,可以使用 CLI 从包含 CR 规范的文件创建自定义资源 (CR)。
由集群管理员添加到集群的CRD。
为 CR 创建一个 YAML 文件。在下面的示例定义中,cronSpec
和 image
自定义字段设置在Kind: CronTab
的 CR 中。Kind
来自 CRD 对象的spec.kind
字段
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 | 指定特定于对象类型的条件。 |
创建文件后,创建对象
$ oc create -f <file_name>.yaml
您可以使用 CLI 检查集群中存在的自定义资源 (CR) 对象。
CR 对象存在于您有权访问的命名空间中。
要获取有关特定 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
您还可以查看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中的自定义数据。 |