• 通识 术语
  • 在 Kubernetes(K8s)运维中,​​CRD 是 Custom Resource Definition 的缩写,即自定义资源定义​​。
  • 它是 Kubernetes 提供的一种强大机制,用于​​扩展 Kubernetes API​​,允许你定义和创建自己的资源类型(称为 ​​Custom Resources,CR​​),就像 Kubernetes 内置的 Pod、Service、Deployment 等资源一样。

核心概念解释

  1. ​Kubernetes API 和内置资源:​​ Kubernetes 的核心功能通过其 API 暴露。API 定义了各种资源对象(如 Pods、Services、Deployments、ConfigMaps 等),用户通过创建、读取、更新、删除这些资源对象来管理集群和应用。
  2. ​扩展的需求:​​ Kubernetes 的内置资源虽然强大,但无法覆盖所有特定领域或复杂应用的需求。例如,你可能需要定义一种资源来描述一个复杂的数据库集群配置、一个特定的中间件实例,或者一个 CI/CD 流水线的模板。

运维中常见的 CRD 应用场景

  • ​数据库管理:​​ 定义 PostgresClusterRedisClusterMongoDB 等 CRD,Operator 负责部署、配置、备份、恢复、扩缩容。
  • ​消息队列:​​ 定义 KafkaTopicRabbitMQCluster 等 CRD,Operator 管理集群和主题。
  • ​监控和日志:​​ Prometheus Operator 定义了 ServiceMonitorPodMonitorAlertmanager 等 CRD 来配置监控目标、规则和告警。Loki Operator 定义了 LokiStack 等。
  • ​服务网格:​​ Istio 定义了 VirtualServiceGatewayDestinationRule 等 CRD 来管理流量路由、策略和安全。
  • ​CI/CD:​​ Argo CD 使用 CRD(如 Application)来管理 GitOps 部署。
  • ​特定中间件/应用:​​ 任何需要在 K8s 上运行且具有复杂生命周期管理的应用都可以通过 CRD + Operator 来简化运维。