2.8. CRD
2.8.1. 管理自定义资源定义中的资源
本指南向开发人员介绍了如何管理来自自定义资源定义 (CRD) 的自定义资源 (CR)。
2.8.1.1. 自定义资源定义
在 Kubernetes API 中,resource(资源)是存储某一类 API 对象集的端点。例如,内置 Pod
资源包含一组 Pod
对象。
自定义资源定义(CRD)对象在集群中定义一个新的、唯一的对象类型,称为 kind,并允许 Kubernetes API 服务器处理其整个生命周期。
自定义资源 (CR) 对象由集群管理员通过集群中已添加的 CRD 创建,并支持所有集群用户在项目中增加新的资源类型。
Operator 会通过将 CRD 与任何所需 RBAC 策略和其他软件特定逻辑打包到一起来利用 CRD。
2.8.1.2. 通过文件创建自定义资源
将自定义资源定义 (CRD) 添加至集群后,可使用 CLI 按照自定义资源 (CR) 规范通过文件创建 CR。
流程
为 CR 创建 YAML 文件。在下面的定义示例中,
cronSpec
和image
自定义字段在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
创建完文件后,再创建对象:
$ oc create -f <file_name>.yaml
2.8.1.3. 检查自定义资源
您可使用 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 2