Kubernetes Operator and CRD
要解决什么问题 Kubernetes 内置资源(Pod、Deployment、Service、PVC 等)描述的是通用计算、网络和存储。很多平台组件有自己的领域对象,例如: 证书:Certificate、Issuer 监控规则:PrometheusRule、ServiceMonitor 存储卷内部状态:Longhorn 的 Volume、Replica GitOps 应用:Argo CD 的 Application CI 流水线:Tekton 的 Task、Pipeline、PipelineRun 这些概念没法用 Deployment 直接表达。Kubernetes 提供的扩展方式是:先用 CRD 注册新的资源类型,再用 控制器(Controller) 持续把这些对象驱动到期望状态。两者合在一起,就是常说的 Operator 模式。 CRD 与 CR 概念 全称 角色 CRD CustomResourceDefinition 类型定义:叫什么名字、属于哪个 API group、有哪些字段 CR Custom Resource 按该类型创建的具体实例 类比:CRD 像 Go 里的 type / struct 定义,CR 是这个类型的一个值。 注意分工: Kubernetes 内置资源(Pod、Deployment、PVC 等)不是用 CRD 实现的。 CRD 是给外部/第三方(以及自己)注册新资源类型的扩展口。 apply 一批 CRD 之后,API Server 只是「认识」这些类型,能接收、校验、存贮、查询对应对象;不会因此去调用 Operator。 安装 Longhorn、cert-manager、kube-prometheus-stack 等组件时,通常会先(或一并)把一批 CRD 注册进集群。之后就可以: ...