跳到主要内容

Doris Operator 简介

Doris Operator 是为满足用户在 Kubernetes 平台上高效部署和运维 Apache Doris 而提供的官方 Kubernetes Operator。它把 Doris 组件间的分布式协同经验与 Kubernetes 原生资源管理能力结合起来,为用户提供更简洁、高效、易用的容器化部署方案。

Doris Operator 基于 Kubernetes CustomResourceDefinitions(CRD)扩展 Kubernetes API。用户提交 Doris 自定义资源后,Operator 会根据资源中描述的期望状态,自动创建并维护对应的 StatefulSetServicePersistentVolumeClaim 等 Kubernetes 资源,并在部分场景下完成节点注册、下线和清理等 Doris 元数据层动作。

本文介绍 Doris Operator 的定位、职责和适用场景,帮助你快速建立整体认知。具体安装与部署步骤请参考存算一体和存算分离的部署文档。

为什么使用 Doris Operator

在 Kubernetes 上部署 Doris 时,通常需要同时处理多组件编排、服务发现、配置挂载、存储绑定、节点注册、扩缩容和健康检查。随着集群规模和环境复杂度增加,手工维护这些资源会带来配置分散、操作步骤多、状态难追踪等问题。

Doris Operator 将这些操作收敛到统一的 Doris 自定义资源中,让用户以声明式方式描述集群目标状态,主要带来:

  • 用一个资源描述集群拓扑。
  • 自动创建和维护 StatefulSetService、PVC 等资源。
  • 按组件依赖顺序推进创建和变更。
  • 将组件状态汇总到 CR status
  • 支持配置变更、扩缩容和滚动更新等常见操作。
  • 在部分场景下执行 Doris 元数据层的节点注册、下线和清理动作。

工作方式

Doris Operator 通过 CRD 扩展 Kubernetes API。用户通过 kubectl、Helm 或其他发布工具提交 Doris 集群资源后,Operator 会监听资源变化,并把它转换为 StatefulSetServicePersistentVolumeClaim 等 Kubernetes 原生资源。

How Doris Operator works

在这个模型中,用户维护的是期望状态,Operator 持续把实际状态收敛到目标状态。

架构形态

Doris Operator 的架构可以分为控制面和数据面。控制面包含 Doris Operator、Reconciler、Webhook 和状态聚合逻辑,负责监听 Doris 自定义资源并推进实际状态向期望状态收敛;数据面包含 StatefulSetService、PVC、HPA 和 Doris Pods 等 Kubernetes 原生资源,负责承载实际运行的 Doris 组件。

Doris Operator 架构分层

用户通过 kubectl、Helm 或其他发布工具提交 Doris 自定义资源后,Kubernetes API Server 保存期望状态,Doris Operator 负责监听资源变化并执行 Reconcile,最终创建或更新底层 Kubernetes 资源。这种分层方式降低了用户直接操作大量底层资源的复杂度,也让 Doris 部署更容易与标准 Kubernetes 平台兼容。

支持的集群资源

Doris Operator 当前主要支持两类资源:

资源部署形态主要组件典型场景
DorisCluster存算一体FE、BE、CN、Broker标准 Doris 集群部署,运维模型相对简单
DorisDisaggregatedCluster存算分离MetaService、FE、ComputeGroup需要弹性计算组、计算资源隔离的场景
  • DorisCluster 用于存算一体部署。一个资源中可以统一描述 FE、BE、CN、Broker 的镜像、副本数、资源、存储、配置和访问方式。
  • DorisDisaggregatedCluster 用于存算分离部署。它把集群拆分为 MetaService、FE 和一个或多个 ComputeGroup,每个 ComputeGroup 都可以独立配置和运维。

管理对象

从用户视角看,Doris Operator 主要管理以下对象:

对象说明
Doris 自定义资源期望中的集群状态,例如 DorisClusterDorisDisaggregatedCluster
StatefulSetDoris 组件 Pod 的副本数、稳定网络标识和滚动更新
Service组件内部通信和外部访问入口
PVC有状态组件的持久化存储
ConfigMap / Secret配置、认证信息和外部依赖信息
HPA支持组件的自动扩缩容
status组件状态、可用性和集群健康度

如何选择部署形态

如果是第一次在 Kubernetes 上部署 Doris,多数场景可以先从存算一体形态开始。只有在明确需要计算资源隔离、弹性 ComputeGroup 或对象存储架构时,再选择存算分离形态。

需求推荐选择
快速部署一套标准 Doris 集群DorisCluster
用更少概念完成初始验证DorisCluster
不同业务负载使用不同计算资源DorisDisaggregatedCluster
更灵活地扩缩计算资源DorisDisaggregatedCluster
已规划使用对象存储和 FoundationDBDorisDisaggregatedCluster

能力边界

Doris Operator 面向 Doris 集群资源和生命周期管理,不替代 Doris 数据库自身的管理能力。

它不直接负责:

  • 数据库、表、分区、索引等 SQL 层对象管理。
  • 数据导入、导出和工作负载调度策略。
  • 用户权限模型设计。
  • 所有故障的自动修复。
  • 对所有 Kubernetes、存储和网络问题的完全屏蔽。

当集群异常时,仍需要结合 Operator 状态、Kubernetes 资源状态和 Doris 组件日志一起定位。

下一步阅读

如果你是第一次接触 Doris Operator,建议按顺序阅读这一组文档;如果你正在排查具体问题,也可以直接跳转到对应页面。

目标建议阅读
理解控制面、数据面和 Reconcile 模型Doris Operator 总体架构
理解 Doris 自定义资源与 StatefulSetService、PVC 等资源的映射关系Doris Operator 资源模型
理解创建、扩缩容、配置变更和删除时的行为Doris Operator 生命周期管理
查看状态字段和排障路径Doris Operator 状态与排障