Doris 在 K8S 之上的扩缩容可通过修改 DorisCluster 资源对应组件的 replicas 字段来实现。修改可直接编辑对应的资源,也可通过命令的方式。

获取 DorisCluster 资源

使用命令 kubectl --namespace {namespace} get doriscluster 获取已部署 DorisCluster (简称 dcr ) 资源的名称。本文中,我们以 doris 为 namespace.

  1. $ kubectl --namespace doris get doriscluster
  2. NAME FESTATUS BESTATUS CNSTATUS BROKERSTATUS
  3. doriscluster-sample available available

扩缩容资源

K8S 所有运维操作通过修改资源为最终状态,由 Operator 服务自动完成运维。扩缩容操作可通过 kubectl --namespace {namespace} edit doriscluster {dcr_name} 直接进入编辑模式修改对应 spec 的 replicas 值,保存退出后 Doris-Operator 完成运维,也可以通过如下命令实现不同组件的扩缩容。

FE 扩容

1. 查看当前 FE 服务数量

  1. $ kubectl --namespace doris get pods -l "app.kubernetes.io/component=fe"
  2. NAME READY STATUS RESTARTS AGE
  3. doriscluster-sample-fe-0 1/1 Running 0 10d

2. 扩容 FE

  1. $ kubectl --namespace doris patch doriscluster doriscluster-sample --type merge --patch '{"spec":{"feSpec":{"replicas":3}}}'

3. 检测扩容结果

  1. $ kubectl --namespace doris get pods -l "app.kubernetes.io/component=fe"
  2. NAME READY STATUS RESTARTS AGE
  3. doriscluster-sample-fe-2 1/1 Running 0 9m37s
  4. doriscluster-sample-fe-1 1/1 Running 0 9m37s
  5. doriscluster-sample-fe-0 1/1 Running 0 8m49s

BE 扩容

1. 查看当前 BE 服务数量

  1. $ kubectl --namespace doris get pods -l "app.kubernetes.io/component=be"
  2. NAME READY STATUS RESTARTS AGE
  3. doriscluster-sample-be-0 1/1 Running 0 3d2h

2. 扩容 BE

  1. $ kubectl --namespace doris patch doriscluster doriscluster-sample --type merge --patch '{"spec":{"beSpec":{"replicas":3}}}'

3. 检测扩容结果

  1. $ kubectl --namespace doris get pods -l "app.kubernetes.io/component=be"
  2. NAME READY STATUS RESTARTS AGE
  3. doriscluster-sample-be-0 1/1 Running 0 3d2h
  4. doriscluster-sample-be-2 1/1 Running 0 12m
  5. doriscluster-sample-be-1 1/1 Running 0 12m

节点缩容

关于节点缩容问题,Doris-Operator 目前并不能很好的支持节点安全下线,在这里仍能够通过减少集群组件的 replicas 属性来实现减少 FE 或 BE 的目的,这里是直接 stop 节点来实现节点下线,当前版本的 Doris-Operator 并未能实现 decommission 安全转移副本后下线。由此可能引发一些问题及其注意事项如下

  • 表存在单副本情况下贸然下线 BE 节点,一定会有数据丢失,尽可能避免此操作。
  • FE Follower 节点尽量避免随意下线,可能带来元数据损坏影响服务。
  • FE Observer 类型节点可以随意下线,并无风险。
  • CN 节点不持有数据副本,可以随意下线,但因此会损失存在于该 CN 节点的远端数据缓存,导致数据查询短时间内存在一定的性能回退。