37.B站薪享宏福笔记——第十三章(2)CRD 自定义资源
13 B站薪享宏福笔记——第十三章
—— Kubernetes 中必备的工具组件
13.2 CRD 自定义资源
—— Kubernetes 设计的灵魂所在
13.2.1 概念
注意:Helm 是相当于把资源清单下载下来,然后通过 value.yaml 进行变量,部署启动,而 CRD 相当于将资源内置到 APIServer 中,通过 类似 kubectl create pod 这种声明式表达,创建对应 CRD 定义的内置资源
随着 Kubernetes 生态系统的持续发展,越来越多高层次的对象将会不断涌现,比起目前使用的对象,新对象将更加专业化,有了它们,开发者将不再需要逐一进行 Deployment、Service、configMap 等步骤,而是创建并管理一些用于表述整个应用程序或者软件服务的对象,能够使用自定义控件观察高阶对象,并在这些高阶对象的基础上创建底层对象,例如:想在 Kubernetes 集群中运行一个 messaging 消息代理,只需要创建一个队列资源实例,而自定义队列控件将自动完成所需的 Secret、Deployment 和 Service,目前,Kubernetes 已经提供了类似的自定义资源添加方式
CustomResourceDefinitions 自定义资源,开发者只需向 Kubernetes API 服务器提交 CRD 对象,既可定义新的资源类型,成功提交 CRD 之后,就能够通过 API 服务器提交 JSON 清单或者 YAML 清单的方式创建自定义资源,以及其他 Kubernetes 资源实例
与内置资源的区别:CRD 资源需显式定义,而内置资源(如 Pod、Deployment)由 Kubernetes 原生支持
开发者可以通过创建 CRD 来创建新的对象类型,但是,如果创建的对象无法再集群中解决实际问题,那么它就是一个无效特性,通常,CRD 与所有 Kubernetes 核心资源都有一个关联的控制器(一个基于自定义对象有效实现目标的组件)
在 kubernetes v1.7 之前的版本中,需要通过 ThirdPartyResource(TPR) 对象的方式定义自定义资源,ThirdPartyResource 于 CRD 十分相似,但是在 kubernetes v1.8 中被 CRD 取代
13.2.2 CRD 创建流程图
典型工作流程:定义 CRD → 注册到集群 → 创建自定义资源实例 → 编写 Controller 逻辑
04:44

13.2.3 CRD 创建
类似 通过 资源清单创建 deployment 一样,CRD 可以通过声明式表达创建 任意一个实例的 CRD
打通 和 APIServer 的沟通,添加 类似 pod 的声明式 接口组、版本、类别,然后声明时 声明一下,APIServer 就知道要干啥了
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号