- 通识 术语
- 在 Kubernetes(K8s)运维中,CRD 是 Custom Resource Definition 的缩写,即自定义资源定义。
- 它是 Kubernetes 提供的一种强大机制,用于扩展 Kubernetes API,允许你定义和创建自己的资源类型(称为 Custom Resources,CR),就像 Kubernetes 内置的 Pod、Service、Deployment 等资源一样。
核心概念解释
- Kubernetes API 和内置资源: Kubernetes 的核心功能通过其 API 暴露。API 定义了各种资源对象(如 Pods、Services、Deployments、ConfigMaps 等),用户通过创建、读取、更新、删除这些资源对象来管理集群和应用。
- 扩展的需求: Kubernetes 的内置资源虽然强大,但无法覆盖所有特定领域或复杂应用的需求。例如,你可能需要定义一种资源来描述一个复杂的数据库集群配置、一个特定的中间件实例,或者一个 CI/CD 流水线的模板。
运维中常见的 CRD 应用场景
- 数据库管理: 定义
PostgresCluster, RedisCluster, MongoDB 等 CRD,Operator 负责部署、配置、备份、恢复、扩缩容。
- 消息队列: 定义
KafkaTopic, RabbitMQCluster 等 CRD,Operator 管理集群和主题。
- 监控和日志: Prometheus Operator 定义了
ServiceMonitor, PodMonitor, Alertmanager 等 CRD 来配置监控目标、规则和告警。Loki Operator 定义了 LokiStack 等。
- 服务网格: Istio 定义了
VirtualService, Gateway, DestinationRule 等 CRD 来管理流量路由、策略和安全。
- CI/CD: Argo CD 使用 CRD(如
Application)来管理 GitOps 部署。
- 特定中间件/应用: 任何需要在 K8s 上运行且具有复杂生命周期管理的应用都可以通过 CRD + Operator 来简化运维。