Skip to main content

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 a Kubernetes CustomResourceDefinition 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

  1. Check that the following command-line 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.
  1. Use one of the following methods to create an EKS cluster:

Hosted GKE
Complete all the prerequisites when create a GKE cluster.

Create as Kubernetes recommend
Kubernetes official documents recommends some ways to set up Kubernetes, as minikube,kOps.

Deploy Doris-Operator on Kubernetes​

1. Apply the Custom Resource Definition(CRD)

kubectl apply -f https://raw.githubusercontent.com/apache/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/apache/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 provided by Doris-Operator. Below is the command:

kubectl apply -f https://raw.githubusercontent.com/apache/doris-operator/master/doc/examples/doriscluster-sample.yaml  

Or download doriscluster-sample a custom resource that tells the Operator how to configure the Kubernetes cluster, and custom resource as api.md and how_to_use 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, Using CLUSTER-IP is recommended. For example, the fe service's CLUSTER-IP is 10.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
    Using EXTERNAL-IP to access fe from Kubernetes external. In default, Doris-Operator not provided EXTERNAL-IP mode. If you want to use EXTERNAL-IP, should custom resource Service field, reference the doc api.md to deploy.

tip

If the doc not cover your requirements, Pleaser reference the docs how_to_use.md and api.md to custom DorisCluster resource to deploy.