Doris-Operator 是按照 Kubernetes 原则构建的在 Kubernetes 平台之上管理运维 Doris 集群的管理软件,允许用户按照资源定义的方式在 Kubernetes 平台之上部署管理 Doris 服务。Doris-Operator 能够管理 Doris 的所有部署形态,能够实现 Doris 大规模形态下智能化和并行化管理。
Kubernetes 上部署 Doris 集群
环境准备
使用 Doris-Operator 部署 Doris 前提需要一个 Kubernetes (简称 K8S)集群,如果已拥有可直接跳过环境准备阶段。
创建 K8S 集群
用户可在喜欢的云平台上申请云托管的 K8S 集群服务,例如:阿里云的 ACK或者腾讯的 TKE等等,也可以按照 Kubernetes 官方推荐的方式手动搭建 K8S 集群。
- 创建 ACK 集群
您可按照阿里云官方文档在阿里云平台创建 ACK 集群。 - 创建 TKE 集群
如果你使用腾讯云可以按照腾讯云TKE相关文档创建 TKE 集群。 - 创建私有集群
私有集群搭建,我们建议按照官方推荐的方式搭建,比如:minikube,kOps。
部署 Doris-Operator
1. 添加 DorisCluster 资源定义
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/config/crd/bases/doris.selectdb.com_dorisclusters.yaml
2. 部署 Doris-Operator
方式一:默认部署模式
直接通过仓库中 Operator 的定义进行部署
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/config/operator/operator.yaml
方式二:自定义部署
operator.yaml 中各个配置是部署 Operator 服务的最低要求。为提高管理效率或者有定制化的需求,下载 operator.yaml 进行自定义部署。
- 下载 Operator 的部署范例 operator.yaml,可直接通过 wget 进行下载。
- 按期望更新 operator.yaml 中各种配置信息。
- 通过如下命令部署 Doris-Operator 服务。
kubectl apply -f operator.yaml
3. 检查 Doris-Operator 服务部署状态
Operator 服务部署后,可通过如下命令查看服务的状态。当STATUS
为Running
状态,且 pod 中所有容器都为Ready
状态时服务部署成功。
kubectl -n doris get pods
NAME READY STATUS RESTARTS AGE
doris-operator-5b9f7f57bf-tsvjz 1/1 Running 66 (164m ago) 6d22h
operator.yaml 中 namespace 默认为 Doris,如果更改了 namespace,在查询服务状态的时候请替换正确的 namespace 名称。
部署 Doris 集群
1. 部署集群Doris-Operator
仓库的 doc/examples 目录提供众多场景的使用范例,可直接使用范例进行部署。以最基础的范例为例:
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/doc/examples/doriscluster-sample.yaml
在 Doris-Operator 仓库中,how_to_use.md 梳理了 Operator 管理运维 Doris 集群的主要能力,DorisCluster 展示了资源定义和从属结构,api.md 可读性展示了资源定义和从属结构。可根据相关文档规划部署 Doris 集群。
2. 检测集群状态
检查所有 pod 的状态
集群部署资源下发后,通过如下命令检查集群状态。当所有 pod 的STATUS
都是Running
状态, 且所有组件的 pod 中所有容器都READY
表示整个集群部署正常。kubectl get pods
NAME READY STATUS RESTARTS AGE
doriscluster-sample-fe-0 1/1 Running 0 20m
doriscluster-sample-be-0 1/1 Running 0 19m
检查部署资源状态
Doris-Operator 会收集集群服务的状态显示到下发的资源中。Doris-Operator 定义了DorisCluster
类型资源名称的简写dcr
,在使用资源类型查看集群状态时可用简写替代。当配置的相关服务的STATUS
都为available
时,集群部署成功。kubectl get dcr
NAME FESTATUS BESTATUS CNSTATUS BROKERSTATUS
doriscluster-sample available available
访问集群
Doris-Operator 为每个组件提供 K8S 的 Service 作为访问入口,可通过kubectl -n {namespace} get svc -l "app.doris.ownerreference/name={dorisCluster.Name}"
来查看 Doris 集群有关的 Service。dorisCluster.Name
为部署DorisCluster
资源定义的名称。
kubectl -n default get svc -l "app.doris.ownerreference/name=doriscluster-sample"
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
doriscluster-sample-fe-internal ClusterIP None <none> 9030/TCP 30m
doriscluster-sample-fe-service ClusterIP 10.152.183.37 a7509284bf3784983a596c6eec7fc212-618xxxxxx.com 8030/TCP,9020/TCP,9030/TCP,9010/TCP 30m
doriscluster-sample-be-internal ClusterIP None <none> 9050/TCP 29m
doriscluster-sample-be-service ClusterIP 10.152.183.141 <none> 9060/TCP,8040/TCP,9050/TCP,8060/TCP 29m
Doris-Operator 部署的 Service 分为两类,后缀-internal
为集群内部组件通信使用的 Service,后缀-service
为用户可使用的 Service。
集群内部访问
在 K8S 内部可通过 Service 的CLUSTER-IP
访问对应的组件。如上图可使用访问 FE 的 Servicedoriscluster-sample-fe-service
对应的 CLUSTER-IP 为10.152.183.37
,使用如下命令连接 FE 服务。
mysql -h 10.152.183.37 -uroot -P9030
集群外部访问
Doris 集群部署默认不提供 K8S 外部访问,如果集群需要被集群外部访问,需要集群能够申请 lb 资源。具备前提后,参考 api.md 文档配置相关组件service
字段,部署后通过对应 Service 的EXTERNAL-IP
进行访问。以上图中 FE 为例,使用如下命令连接:
mysql -h a7509284bf3784983a596c6eec7fc212-618xxxxxx.com -uroot -P9030
后记
本文简述 Doris 在 Kubernetes 的部署使用,Doris-Operator 提供的其他能力请参看主要能力介绍,DorisCluster 资源的 api 可读性文档定制化部署 Doris 集群。