跳到主要内容

部署 Doris Operator

添加 Doris Cluster 资源定义

Doris Operator 使用自定义资源定义(Custom Resource Definition, CRD)扩展 Kubernetes。Doris Cluster 的 CRD 中封装了对 Doris 对象的描述,例如对 FE 或 BE 的描述,详细内容可以参考 doris-operator-api。在部署 Doris 前,需要先创建 Doris Cluster 的 CRD。

通过以下命令可以在 Kubernetes 环境中部署 Doris Cluster CRD:

kubectl create -f https://raw.githubusercontent.com/apache/doris-operator/master/config/crd/bases/doris.selectdb.com_dorisclusters.yaml

如果没有外网,先将 CRD 文件下载到本地:

wget https://raw.githubusercontent.com/apache/doris-operator/master/config/crd/bases/doris.selectdb.com_dorisclusters.yaml
kubectl create -f ./doris.selectdb.com_dorisclusters.yaml

以下是期望输出结果:

customresourcedefinition.apiextensions.k8s.io/dorisclusters.doris.selectdb.com created

在创建了 Doris Cluster CRD 后,可以通过以下命令查看创建的 CRD。

kubectl get crd | grep doris

以下为期望输出结果:

dorisclusters.doris.selectdb.com                      2024-02-22T16:23:13Z

添加 Doris Operator

方案一:快速部署 Doris Operator

可以直接拉去仓库中的 Doris Operator 模板进行快速部署。

使用以下命令可以在 Kubernetes 集群中部署 Doris Operator:

kubectl apply -f https://raw.githubusercontent.com/apache/doris-operator/master/config/operator/operator.yaml

以下为期望输出结果:

namespace/doris created
role.rbac.authorization.k8s.io/leader-election-role created
rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created
clusterrole.rbac.authorization.k8s.io/doris-operator created
clusterrolebinding.rbac.authorization.k8s.io/doris-operator-rolebinding created
serviceaccount/doris-operator created
deployment.apps/doris-operator created

方案二:自定义部署 Doris Operator

在创建完 CRD 后,在 Kubernetes 集群上部署 Doris Operator 有两种方式:在线与离线部署。

在 operator.yaml 文件中规范了部署 operator 的服务的最低要求。为了适配复杂的生产环境,可以下载 operator.yaml 文件后,按照期望更新其中配置。

在线安装 Doris Operator

在修改 operator.yaml 文件后,可以使用以下命令部署 Doris Operator 服务:

kubectl apply -f ./operator.yaml

以下为期望输出结果:

namespace/doris created
role.rbac.authorization.k8s.io/leader-election-role created
rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created
clusterrole.rbac.authorization.k8s.io/doris-operator created
clusterrolebinding.rbac.authorization.k8s.io/doris-operator-rolebinding created
serviceaccount/doris-operator created
deployment.apps/doris-operator created

离线安装 Doris Operator

  1. 下载 operator 运行所需镜像文件

如果服务器没有连通外网,需要先下载对应的 operator 镜像文件。Doris Operator 用到以下的镜像:

selectdb/doris.k8s-operator:latest

在可以连通外网的服务器中运行以下的命令,可以将镜像下载下来:

## download doris operator image
docker pull selectdb/doris.k8s-operator:latest
## save the doris operator image as a tar package
docker save -o doris.k8s-operator-latest.tar selectdb/doris.k8s-operator:latest

将已打包的 tar 文件放置到所有的 Kubernetes node 节点中,运行以下命令上传镜像:

docker load -i doris.k8s-operator-latest.tar
  1. 配置 Doris Operator

下载 operator.yaml 文件后,可以根据生产环境期望修改模板。

Doris Operator 在 Kubernetes 集群中是一个无状态的 Deployment,可以根据需求修改如 limitsreplicalabelnamespace 等项目。如需要指定某一版本的 doirs operator 镜像,可以在上传镜像后对 operator.yaml 文件做如下修改:

...
containers:
- command:
- /dorisoperator
args:
- --leader-elect
image: selectdb/doris.k8s-operator:v1.0.0
name: dorisoperator
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
...
  1. 安装 Doris Operator

在修改 Doris Operator 模板后,可以使用 apply 命令部署 Operator:

kubectl apply -f ./operator.yaml

以下为期望输出结果:

namespace/doris created
role.rbac.authorization.k8s.io/leader-election-role created
rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created
clusterrole.rbac.authorization.k8s.io/doris-operator created
clusterrolebinding.rbac.authorization.k8s.io/doris-operator-rolebinding created
serviceaccount/doris-operator created
deployment.apps/doris-operator created

方案三:Helm 部署 Doris Operator

Helm Chart 是一系列描述 Kubernetes 相关资源的 YAML 文件的封装。通过 Helm 部署应用时,你可以自定义应用的元数据,以便于分发应用。Chart 是 Helm 的软件包,采用 TAR 格式,用于部署 Kubernetes 原生应用程序。通过 Helm Chart 可以简化部署 Doris 集群的流程。

  1. 添加部署仓库

在线添加仓库

通过 repo add 命令添加远程仓库

helm repo add doris-repo https://charts.selectdb.com

通过 repo update 命令更新最新版本的 chart

helm repo update doris-repo
  1. 安装 Doris Operator

通过 helm install 命令可以使用默认配置在 doris 的 namespace 中安装 Doris Operator

helm install operator doris-repo/doris-operator

如果需要自定义装配 values.yaml ,可以参考如下命令:

helm install -f values.yaml operator doris-repo/doris-operator

通过 kubectl get pods 命令查看 Pod 的部署状态。当 Doris Operator 的 Pod 处于 Running 状态且 Pod 内所有容器都已经就绪,即部署成功。

kubectl get pod --namespace doris

返回结果如下:

NAME                              READY   STATUS    RESTARTS   AGE
doris-operator-866bd449bb-zl5mr 1/1 Running 0 18m

离线添加仓库

如果服务器无法连接外网,需要预先下载 Doris Operator 与 Doris Cluster 的 chart 资源。

  1. 下载离线 chart 资源

下载 doris-operator-{chart_version}.tgz 安装 Doris Operator chart。如需要下载 1.4.0 版本的 Doris Operator 可以使用以下命令:

wget https://charts.selectdb.com/doris-operator-1.4.0.tgz
  1. 安装 Doris Operator

通过 helm install 命令可以安装 Doris Operator。

helm install operator doris-operator-1.4.0.tgz

如果需要自定义装配 values.yaml ,可以参考如下命令:

helm install -f values.yaml operator doris-operator-1.4.0.tgz

通过 kubectl get pods 命令查看 Pod 的部署状态。当 Doris Operator 的 Pod 处于 Running 状态且 Pod 内所有容器都已经就绪,即部署成功。

kubectl get pod --namespace doris

返回结果如下:

NAME                              READY   STATUS    RESTARTS   AGE
doris-operator-866bd449bb-zl5mr 1/1 Running 0 18m

查看服务状态

当部署 Operator 服务后,可以通过以下命令查看服务状态。

kubectl get pod -n doris

返回结果如下:

NAME                              READY   STATUS    RESTARTS   AGE
doris-operator-6f47594455-p5tp7 1/1 Running 0 11s

需要确保 STATUS 状态为 Running,且 pod 中所有容器的状态都为 Ready。