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 1
selectdb/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 1
docker 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 1
kubectl 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 1
helm repo add doris-repo https://charts.selectdb.com
通过
repo update
命令更新最新版本的chart
Bash 1
helm repo update doris-repo
-
安装
Doris Operator
通过
helm install
命令可以使用默认配置在doris
的namespace
中安装Doris Operator
Bash 1
helm install operator doris-repo/doris-operator
如果需要自定义装配
values.yaml
,可以参考如下命令:Bash 1
helm install -f values.yaml operator doris-repo/doris-operator
通过
kubectl get pods
命令查看Pod
的部署状态。当Doris Operator
的Pod
处于Running
状态且Pod
内所有容器都已经就绪,即部署成功。Bash 1
kubectl 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 1
wget https://charts.selectdb.com/doris-operator-1.4.0.tgz
-
安装
Doris Operator
通过
helm install
命令可以安装Doris Operator
。Bash 1
helm install operator doris-operator-1.4.0.tgz
如果需要自定义装配
values.yaml
,可以参考如下命令:Bash 1
helm install -f values.yaml operator doris-operator-1.4.0.tgz
通过
kubectl get pods
命令查看Pod
的部署状态。当Doris Operator
的Pod
处于Running
状态且Pod
内所有容器都已经就绪,即部署成功。Bash 1
kubectl 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
。