跳到主要内容
最后 更新

Doris Operator 状态与排障

Doris Operator 会把组件状态写入 Doris 自定义资源的 status 字段。排查 Doris on Kubernetes 问题时,建议先查看 CR 状态,再继续查看 Operator 日志、Kubernetes 资源和 Doris 组件日志。

查看资源状态

存算一体集群使用 DorisCluster,通常简写为 dcr

kubectl get dcr -n ${namespace}
kubectl describe dcr ${cluster_name} -n ${namespace}

存算分离集群使用 DorisDisaggregatedCluster,通常简写为 ddc

kubectl get ddc -n ${namespace}
kubectl describe ddc ${cluster_name} -n ${namespace}

如果 CR 显示组件未就绪,再继续查看底层资源:

kubectl get pod,sts,svc,pvc -n ${namespace}
kubectl get event -n ${namespace} --sort-by=.lastTimestamp

DorisCluster 状态

DorisCluster.status 按组件汇总:

字段说明
feStatusFE 状态
beStatusBE 状态
cnStatusCN 状态
brokerStatusBroker 状态

每个组件状态通常包含:

字段说明
accessService组件对外访问 Service
runningInstances正在运行的实例
creatingInstances正在创建的实例
failedInstances失败实例
componentCondition.phase当前组件阶段
componentCondition.reason当前阶段原因
componentCondition.message可读状态说明

常见 phase 包括:

Phase含义
available组件可用
reconcilingOperator 正在收敛资源
waitScheduling正在等待调度或依赖资源就绪
haveMemberFailed至少存在一个失败实例
initializing组件初始化中
upgrading组件升级中
scaling组件扩缩容中
restarting组件重启中

DorisDisaggregatedCluster 状态

DorisDisaggregatedCluster.status 包含组件状态和整体健康度。

字段说明
metaServiceStatusMetaService 状态
feStatusFE 状态
computeGroupStatusesComputeGroup 状态列表
clusterHealth集群整体健康度
observedGenerationOperator 已观察到的资源版本

clusterHealth 反映整体可用性:

字段说明
health整体健康度,例如 greenyellowred
feAvailableFE 是否可用
cgCountComputeGroup 数量
cgAvailableCount可用 ComputeGroup 数量
cgFullAvailableCount所有 Pod 都可用的 ComputeGroup 数量
Health含义
green核心组件可用,ComputeGroup 可用情况符合预期
yellow集群部分可用,但尚未完全就绪
red核心组件不可用,或可用 ComputeGroup 数量不足

ComputeGroup 的 phase 可能包括 ReadyReconcilingScalingDecommissioningScaleDownFailedSuspended

推荐排障路径

建议按下面的顺序推进:

Recommended troubleshooting path

常见入口

Pod 长时间 Pending

常见原因:

  • 节点 CPU 或内存不足。
  • 节点选择器、亲和性或容忍配置不匹配。
  • PVC 绑定失败。
kubectl describe pod ${pod_name} -n ${namespace}
kubectl get event -n ${namespace} --sort-by=.lastTimestamp
kubectl get pvc -n ${namespace}

PVC 无法绑定

常见原因:

  • StorageClass 不存在。
  • 存储容量不足。
  • 访问模式不匹配。
kubectl get storageclass
kubectl describe pvc ${pvc_name} -n ${namespace}

组件反复重启

常见原因:

  • Doris 启动配置错误。
  • 端口冲突或 FQDN 配置不正确。
  • 存储权限或挂载路径异常。
  • JVM 或系统参数不满足要求。
kubectl logs ${pod_name} -n ${namespace}
kubectl describe pod ${pod_name} -n ${namespace}

如果 Pod 处于 CrashLoopBackOff 且普通日志不足以定位问题,可以参考集群运维文档中的 Debug 流程进入容器排查。

Service 无法访问

常见原因:

  • 把 internal Service 当作外部访问入口。
  • Service 类型与访问环境不匹配。
  • Pod 未 Ready,导致 Endpoints 为空。
  • 云厂商 LoadBalancer 创建失败。
kubectl get svc -n ${namespace}
kubectl get endpoints -n ${namespace}
kubectl describe svc ${service_name} -n ${namespace}

配置变更未生效

常见原因:

  • ConfigMap 已更新,但组件未重启。
  • ConfigMap key 与组件要求不匹配。
  • CR 未正确引用 ConfigMap。
  • 挂载路径与配置文件路径不一致。
kubectl get configmap -n ${namespace}
kubectl describe dcr ${cluster_name} -n ${namespace}
kubectl describe ddc ${cluster_name} -n ${namespace}

对存算一体集群,如果预期核心 ConfigMap 变更后自动触发滚动重启,需要确认是否配置了 enableRestartWhenConfigChange

authSecret 配置问题

Doris Operator 在执行节点注册、缩容、下线等管理动作时,可能需要使用 Doris 管理凭证。authSecret 配置错误会导致这些动作无法完成。

常见原因:

  • 引用的 Secret 不存在或命名空间错误。
  • Secret 类型或 key 不正确。
  • 用户名或密码与 Doris 管理账号不一致。
  • 管理账号缺少必要权限。
kubectl get secret ${auth_secret_name} -n ${namespace}
kubectl describe dcr ${cluster_name} -n ${namespace}
kubectl describe ddc ${cluster_name} -n ${namespace}
kubectl logs deployment/${operator_deployment_name} -n ${operator_namespace}

如果集群已设置 root 密码,或者使用了非默认管理账号,需要确认 authSecret 与实际 Doris 凭证一致。

ComputeGroup 缩容未完成

在存算分离集群中,ComputeGroup 缩容可能长时间停留在 DecommissioningScaleDownFailed

常见原因:

  • Doris 元数据层 decommission 尚未完成。
  • FE 不可用。
  • 管理凭证错误。
  • 目标节点仍有数据迁移或清理任务。
kubectl describe ddc ${cluster_name} -n ${namespace}
kubectl logs deployment/${operator_deployment_name} -n ${operator_namespace}

必要时还需要进入 Doris 查看对应节点和 ComputeGroup 的状态。

Operator 日志

当 CR 状态不足以说明具体原因时,应查看 Doris Operator 日志:

kubectl get pod -n ${operator_namespace}
kubectl logs ${operator_pod_name} -n ${operator_namespace}