1.2.3.2.2 部署 Doris Operator¶
1 添加 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 :
| Bash | |
|---|---|
1 | |
如果没有外网,先将 CRD 文件下载到本地:
| Bash | |
|---|---|
1 2 | |
以下是期望输出结果:
| Bash | |
|---|---|
1 | |
在创建了 Doris Cluster CRD 后,可以通过以下命令查看创建的 CRD 。
| Bash | |
|---|---|
1 | |
以下为期望输出结果:
| Bash | |
|---|---|
1 | |
2 添加 Doris Operator¶
2.1 方案一:快速部署 Doris Operator¶
可以直接拉去仓库中的 Doris Operator 模板进行快速部署。
使用以下命令可以在 Kubernetes 集群中部署 Doris Operator :
| Bash | |
|---|---|
1 | |
以下为期望输出结果:
| Bash | |
|---|---|
1 2 3 4 5 6 7 | |
2.2 方案二:自定义部署 Doris Operator¶
在创建完 CRD 后,在 Kubernetes 集群上部署 Doris Operator 有两种方式:在线与离线部署。
在 operator.yaml 文件中规范了部署 operator 的服务的最低要求。为了适配复杂的生产环境,可以下载 operator.yaml 文件后,按照期望更新其中配置。
2.2.1 在线安装 Doris Operator¶
在修改 operator.yaml 文件后,可以使用以下命令部署 Doris Operator 服务:
| Bash | |
|---|---|
1 | |
以下为期望输出结果:
| Bash | |
|---|---|
1 2 3 4 5 6 7 | |
2.2.2 离线安装 Doris Operator¶
-
下载
operator运行所需镜像文件如果服务器没有连通外网,需要先下载对应的
operator镜像文件。Doris Operator用到以下的镜像:Bash 1selectdb/doris.k8s-operator:latest在可以连通外网的服务器中运行以下的命令,可以将镜像下载下来:
Bash 1 2 3 4
## 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节点中,运行以下命令上传镜像:Bash 1docker load -i doris.k8s-operator-latest.tar -
配置
Doris Operator下载
operator.yaml文件后,可以根据生产环境期望修改模板。Doris Operator在Kubernetes集群中是一个无状态的Deployment,可以根据需求修改如limits、replica、label、namespace等项目。如需要指定某一版本的doirs operator镜像,可以在上传镜像后对operator.yaml文件做如下修改:Bash 1 2 3 4 5 6 7 8 9 10 11 12 13 14
... containers: - command: - /dorisoperator args: - --leader-elect image: selectdb/doris.k8s-operator:v1.0.0 name: dorisoperator securityContext: allowPrivilegeEscalation: false capabilities: drop: - "ALL" ... -
安装
Doris Operator在修改
Doris Operator模板后,可以使用apply命令部署Operator:Bash 1kubectl apply -f ./operator.yaml以下为期望输出结果:
Bash 1 2 3 4 5 6 7
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
2.3 方案三:Helm 部署 Doris Operator¶
Helm Chart 是一系列描述 Kubernetes 相关资源的 YAML 文件的封装。通过 Helm 部署应用时,你可以自定义应用的元数据,以便于分发应用。 Chart 是 Helm 的软件包,采用 TAR 格式,用于部署 Kubernetes 原生应用程序。通过 Helm Chart 可以简化部署 Doris 集群的流程。
2.3.1 在线添加仓库¶
-
添加部署仓库
通过
repo add命令添加远程仓库Bash 1helm repo add doris-repo https://charts.selectdb.com通过
repo update命令更新最新版本的chartBash 1helm repo update doris-repo -
安装
Doris Operator通过
helm install命令可以使用默认配置在doris的namespace中安装Doris OperatorBash 1helm install operator doris-repo/doris-operator如果需要自定义装配
values.yaml,可以参考如下命令:Bash 1helm install -f values.yaml operator doris-repo/doris-operator通过
kubectl get pods命令查看Pod的部署状态。当Doris Operator的Pod处于Running状态且Pod内所有容器都已经就绪,即部署成功。Bash 1kubectl get pod --namespace doris返回结果如下:
Bash 1 2
NAME READY STATUS RESTARTS AGE doris-operator-866bd449bb-zl5mr 1/1 Running 0 18m
2.3.2 离线添加仓库¶
如果服务器无法连接外网,需要预先下载 Doris Operator 与 Doris Cluster 的 chart 资源。
-
下载离线
chart资源下载
doris-operator-{chart_version}.tgz安装Doris Operator chart。如需要下载1.4.0版本的Doris Operator可以使用以下命令:Bash 1wget https://charts.selectdb.com/doris-operator-1.4.0.tgz -
安装
Doris Operator通过
helm install命令可以安装Doris Operator。Bash 1helm install operator doris-operator-1.4.0.tgz如果需要自定义装配
values.yaml,可以参考如下命令:Bash 1helm install -f values.yaml operator doris-operator-1.4.0.tgz通过
kubectl get pods命令查看Pod的部署状态。当Doris Operator的Pod处于Running状态且Pod内所有容器都已经就绪,即部署成功。Bash 1kubectl get pod --namespace doris返回结果如下:
Bash 1 2
NAME READY STATUS RESTARTS AGE doris-operator-866bd449bb-zl5mr 1/1 Running 0 18m
3 查看服务状态¶
当部署 Operator 服务后,可以通过以下命令查看服务状态。
| Bash | |
|---|---|
1 | |
返回结果如下:
| Bash | |
|---|---|
1 2 | |
需要确保 STATUS 状态为 Running ,且 pod 中所有容器的状态都为 Ready 。