3步极速部署!Apache Doris Kubernetes容器化实践指南
你还在为Apache Doris的复杂部署流程头疼吗?手动配置节点、协调FE(Frontend)与BE(Backend)通信、处理存储卷挂载——这些步骤不仅耗时,还容易出现版本兼容问题。本文将带你通过3个核心步骤,在Kubernetes环境下实现Apache Doris的容器化部署,全程无需复杂命令,即使是新手也能1小时内完成集群搭建。读完本文你将掌握:
- 自动节点发现的StatefulSet部署方案
- 计算/存储分离的云原生架构配置
- 动态扩缩容与故障自愈的最佳实践
部署架构概览
Apache Doris在K8s环境中的部署采用计算与存储分离架构,通过StatefulSet管理有状态服务,结合Headless Service实现Pod间自动发现。核心组件包括:
- FE集群:由3个Follower节点组成,通过Raft协议实现元数据高可用,对应配置文件 docker/runtime/k8s/doris_follower.yml
- BE集群:3个存储节点负责数据持久化,配置文件 docker/runtime/k8s/doris_be.yml
- CN集群:3个计算节点处理查询请求,实现弹性扩缩容,配置文件 docker/runtime/k8s/doris_cn.yml
graph TD
Client[用户客户端] -->|9030端口| Service[K8s Service]
Service -->|查询请求| CN[计算节点集群]
CN -->|数据交互| BE[存储节点集群]
BE -->|元数据同步| FE[Follower节点集群]
FE -->|Raft协议| FE1[FE节点1]
FE --> FE2[FE节点2]
FE --> FE3[FE节点3]
前置准备
环境要求
- Kubernetes集群版本 ≥ 1.21
- 每个节点至少2核8GB资源
- 已安装StorageClass(推荐使用LocalPV或云厂商存储)
- 网络插件支持Headless Service通信(如Calico、Flannel)
配置文件准备
从项目仓库获取3个核心YAML配置文件:
git clone https://gitcode.com/gh_mirrors/dori/doris.git
cd doris/docker/runtime/k8s
部署步骤
步骤1:部署FE集群(元数据节点)
FE节点通过StatefulSet部署,利用K8s的DNS服务实现节点自动发现。关键配置项说明:
enable_fqdn_mode: true:启用域名模式,解决Pod重建IP变化问题enable_deploy_manager: k8s:自动管理BE/CN节点的添加与移除- 环境变量
FE_SERVICE指定Headless Service名称,实现集群内部通信
# 核心配置片段来自 [docker/runtime/k8s/doris_follower.yml](https://gitcode.com/gh_mirrors/dori/doris/blob/c47399cc0d0dbd0e97ed31810b8c777577a72f96/docker/runtime/k8s/doris_follower.yml?utm_source=gitcode_repo_files)
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: doris-follower-cluster1
spec:
serviceName: doris-follower-cluster1 # Headless Service名称
replicas: 3
template:
spec:
containers:
- name: doris-follower-cluster1
env:
- name: FE_SERVICE
value: "doris-follower-cluster1" # 用于节点发现的服务名
- name: BE_SERVICE
value: "doris-be-cluster1" # 关联BE集群
ports:
- containerPort: 9010
name: edit-log-port # Raft协议通信端口
执行部署命令:
kubectl apply -f doris_follower.yml
步骤2:部署BE与CN集群(存储与计算节点)
BE节点负责数据存储,CN节点专注计算任务,两者通过be_node_role参数区分角色。配置文件中通过priority_networks指定通信网段,避免跨节点网络隔离问题:
# BE节点角色配置 [docker/runtime/k8s/doris_be.yml](https://gitcode.com/gh_mirrors/dori/doris/blob/c47399cc0d0dbd0e97ed31810b8c777577a72f96/docker/runtime/k8s/doris_be.yml?utm_source=gitcode_repo_files)
data:
be.conf: |
be_node_role = storage # 存储节点角色
priority_networks = 172.16.0.0/24 # 内部通信网段
# CN节点角色配置 [docker/runtime/k8s/doris_cn.yml](https://gitcode.com/gh_mirrors/dori/doris/blob/c47399cc0d0dbd0e97ed31810b8c777577a72f96/docker/runtime/k8s/doris_cn.yml?utm_source=gitcode_repo_files)
data:
be.conf: |
be_node_role = computation # 计算节点角色
同时部署BE与CN集群:
kubectl apply -f doris_be.yml
kubectl apply -f doris_cn.yml
步骤3:验证集群状态
- 检查Pod状态,确保所有StatefulSet的3个副本均就绪:
kubectl get pods -o wide
# 预期输出包含 doris-follower-cluster1-0/1 Running
# doris-be-cluster1-0/1 Running
# doris-cn-cluster1-0/1 Running
- 进入FE容器验证节点注册情况:
kubectl exec -it doris-follower-cluster1-0 -- sh
cd /opt/apache-doris/fe/bin
./mysql-client -h 127.0.0.1 -P 9030 -u root
在MySQL客户端执行以下SQL查看节点状态:
SHOW PROC '/frontends'\G
SHOW PROC '/backends'\G
高级配置
资源优化
根据业务负载调整资源请求与限制,推荐配置:
| 组件 | CPU请求 | 内存请求 | CPU限制 | 内存限制 |
|---|---|---|---|---|
| FE | 2核 | 4Gi | 4核 | 8Gi |
| BE | 4核 | 8Gi | 8核 | 16Gi |
| CN | 4核 | 8Gi | 16核 | 32Gi |
修改对应StatefulSet的resources字段:
resources:
requests:
cpu: "4"
memory: "8Gi"
limits:
cpu: "16"
memory: "32Gi"
存储配置
BE节点需配置持久化存储,推荐使用LocalPV或云厂商提供的SSD存储类:
volumeClaimTemplates:
- metadata:
name: data
spec:
storageClassName: "local-ssd" # 替换为实际存储类名
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100Gi # 单节点存储容量
常见问题解决
节点注册失败
现象:BE/CN节点启动后未出现在SHOW PROC '/backends'结果中
排查:
- 检查FE日志:
kubectl logs doris-follower-cluster1-0 -c doris-follower-cluster1 - 确认Headless Service是否正常:
kubectl describe service doris-be-cluster1 - 验证网络策略是否允许9050端口通信
计算节点扩容
通过修改CN集群的副本数实现弹性扩缩容:
kubectl scale statefulset doris-cn-cluster1 --replicas=5
系统将自动创建新的CN节点并注册到FE,无需手动执行ALTER SYSTEM ADD COMPUTE NODE命令。
总结与展望
本文介绍的K8s部署方案通过以下特性实现云原生最佳实践:
- 自动运维:StatefulSet+Headless Service实现节点身份持久化与自动发现
- 弹性伸缩:计算节点独立扩缩容,应对查询峰值
- 故障自愈:Pod异常时自动重建,Raft协议保障数据一致性
后续可结合项目中的监控工具 tools/pipeline-tracing/ 实现查询性能追踪,或通过 docker/runtime/k8s/ 目录下的Prometheus配置实现指标采集。
通过容器化部署,Apache Doris真正实现了"一键启动、弹性扩展"的云原生体验,为实时分析场景提供高效稳定的计算平台。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00