Deploy Doris on Kubernetes
Doris-Operator is software extension to Kubernetes that make use of custom resource to manage Doris and it components. It provides DorisCluster (opens in a new tab) a Kubernetes CustomResourceDefinition (opens in a new tab) for user to custom resource.
Deploy Doris on Kubernetes
Start Kubernetes
Having a Kubernetes environment is the premise to deploy Doris on Kubernetes. If you already have it, please ignore this step. Hosted Kubernetes on cloud platform or set-up by yourself are all good choice.
Hosted EKS
- Check that the following command-line (opens in a new tab) tools are installed in your environment:
- Install and configure AWS command-line tool AWS CLI.
- Install EKS cluster command-line tool eksctl.
- Install Kubernetes cluster command-line tool kubectl.
- Use one of the following methods to create an EKS cluster:
- Use eksctl to quickly create an EKS cluster (opens in a new tab).
- Manually create an EKS cluster with the AWS console and AWS CLI (opens in a new tab).
Hosted GKE
Complete all the prerequisites (opens in a new tab) when create a GKE cluster (opens in a new tab).
Create as Kubernetes recommend
Kubernetes official documents recommends some ways to set up Kubernetes, as minikube (opens in a new tab),kOps (opens in a new tab).
Deploy Doris-Operator on Kubernetes
1. Apply the Custom Resource Definition(CRD) (opens in a new tab)
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/config/crd/bases/doris.selectdb.com_dorisclusters.yaml
2. Install Doris-Operator
If you want to use the defaults operator resource:
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/config/operator/operator.yaml
The user defined deployment in github repo are simply:
Instead of using the command below, apply your local version of the Operator manifest to the cluster when you custom operator resource.
kubectl apply -f operator.yaml
3. Validate The Operator is Running
Using the command kubectl -n \{namespace} get pods
get the status of deployed operator.
kubectl -n doris get pods
NAME READY STATUS RESTARTS AGE
doris-operator-5b9f7f57bf-tsvjz 1/1 Running 66 (164m ago) 6d22h
Expected result, the Pod STATUS
is Running
and all containers in Pod are all READY
.
Start Doris on Kubernetes
1. Initialize Doris Cluster
User can directly deploy Doris by examples (opens in a new tab) provided by Doris-Operator. Below is the command:
kubectl apply -f https://raw.githubusercontent.com/selectdb/doris-operator/master/doc/examples/doriscluster-sample.yaml
Or download doriscluster-sample (opens in a new tab) a custom resource that tells the Operator how to configure the Kubernetes cluster, and custom resource as api.md (opens in a new tab) and how_to_use (opens in a new tab) docs. Instead of using the command below, apply the customized resource.
kubeectl apply -f doriscluster-sample.yaml
2. Validate Doris Cluster Status
Using the command kubectl -n \{namespace} get pods
check pods status.
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
All Pods created by DorisCluster resource should be in Running
STATUS, and each pod's containers should be RREADY
.
Use Doris Cluster
On kubernetes Doris-Operator provide Service
a resource build in kubernetes for access to Doris.
The command kubectl -n \{namespace} get svc -l "app.doris.ownerreference/name={dorisCluster.Name}"
used to get service
created by Doris-Operator. dorisCluster.Nmae
is the name of DorisCluster resource deployed by step 1.
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
Use SQL Client for Access
Service created by Doris-Operator have two types, suffix is -internal
or -service
. Service have the -internal
suffix for communicating in Doris components, Service have -service
suffix for user to access.
-
In Kubernetes
In kubernetes, UsingCLUSTER-IP
is recommended. For example, the fe service'sCLUSTER-IP
is10.152.183.37
that displayed by above command. Using below command to access fe service.mysql -h 10.152.183.37 -uroot -P9030
-
Out Kubernetes
UsingEXTERNAL-IP
to access fe from Kubernetes external. In default, Doris-Operator not providedEXTERNAL-IP
mode. If you want to useEXTERNAL-IP
, should custom resourceService
field, reference the doc api.md (opens in a new tab) to deploy.
:::tip
If the doc not cover your requirements, Pleaser reference the docs how_to_use.md (opens in a new tab) and api.md (opens in a new tab) to custom DorisCluster
resource to deploy.
:::