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) 添加到集群后,可以使用 CLI 从包含 CR 规范的文件创建自定义资源 (CR)。
为 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 版本 (name/version)。 |
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 中的自定义数据。 |