You are looking at the documentation of a prior release. To read the documentation of the latest release, please
visit here.
New to KubeDB? Please start here.
Horizontal Scale Qdrant Cluster
This guide will show you how to use KubeDB Ops Manager to increase/decrease the number of nodes in a Qdrant cluster.
Before You Begin
At first, you need to have a Kubernetes cluster, and the
kubectlcommand-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using kind.Install
KubeDBin your cluster following the steps here.You should be familiar with the following
KubeDBconcepts:
To keep everything isolated, we are going to use a separate namespace called demo throughout this tutorial.
$ kubectl create ns demo
namespace/demo created
Note: YAML files used in this tutorial are stored in docs/examples/qdrant/scaling/horizontal-scaling directory of kubedb/docs repository.
Apply Horizontal Scaling on Qdrant Cluster
Here, we are going to deploy a Qdrant cluster using a supported version by KubeDB operator. Then we are going to apply horizontal scaling on it.
Prepare Cluster
At first, we are going to deploy a cluster with 3 nodes. Then, we are going to add two additional nodes through horizontal scaling. Finally, we will remove 1 node from the cluster again via horizontal scaling.
Deploy Qdrant Cluster:
In this section, we are going to deploy a Qdrant cluster with 3 nodes. Then, in the next section we will scale the cluster using horizontal scaling. Below is the YAML of the Qdrant CR that we are going to create:
apiVersion: kubedb.com/v1alpha2
kind: Qdrant
metadata:
name: qdrant-sample
namespace: demo
spec:
version: "1.17.0"
mode: Distributed
replicas: 3
storage:
storageClassName: "standard"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
deletionPolicy: WipeOut
Let’s create the Qdrant CR we have shown above:
$ kubectl create -f https://github.com/kubedb/docs/raw/v2026.10.12/docs/examples/qdrant/scaling/horizontal-scaling/qdrant.yaml
qdrant.kubedb.com/qdrant-sample created
Wait for the cluster to be ready:
KubeDB operator watches for Qdrant objects using Kubernetes API. When a Qdrant object is created, KubeDB operator will create a new PetSet, Services, and Secrets, etc.
Now, watch Qdrant is going to Running state and also watch PetSet and its pods:
$ watch -n 3 kubectl get qdrant -n demo qdrant-sample
Every 3.0s: kubectl get qdrant -n demo qdrant-sample
NAME VERSION STATUS AGE
qdrant-sample 1.17.0 Ready 4m40m
$ watch -n 3 kubectl get petset -n demo qdrant-sample
Every 3.0s: kubectl get petset -n demo qdrant-sample
NAME READY AGE
qdrant-sample 3/3 4m41m
$ watch -n 3 kubectl get pods -n demo
Every 3.0s: kubectl get pod -n demo
NAME READY STATUS RESTARTS AGE
qdrant-sample-0 1/1 Running 0 4m25m
qdrant-sample-1 1/1 Running 0 4m26m
qdrant-sample-2 1/1 Running 0 4m26m
Let’s check the current number of nodes:
$ kubectl get qdrant -n demo qdrant-sample -o=jsonpath='{.spec.replicas}{"\n"}'
3
We are ready to apply the QdrantOpsRequest CR to scale horizontally.
Scale Up
Here, we are going to scale up the cluster from 3 nodes to 5 nodes.
Create QdrantOpsRequest:
apiVersion: ops.kubedb.com/v1alpha1
kind: QdrantOpsRequest
metadata:
name: qdops-hscale-up
namespace: demo
spec:
type: HorizontalScaling
databaseRef:
name: qdrant-sample
horizontalScaling:
node: 5
timeout: 5m
apply: IfReady
Here,
spec.databaseRef.namespecifies that we are performing horizontal scaling onqdrant-sampleQdrant database.spec.typespecifies that we are performingHorizontalScalingon our database.spec.horizontalScaling.nodespecifies the desired number of nodes after scaling.spec.timeoutspecifies the timeout for the operation (learn more here).spec.applyspecifies when to apply the operation (learn more here).
Let’s create the QdrantOpsRequest CR we have shown above:
$ kubectl apply -f https://github.com/kubedb/docs/raw/v2026.10.12/docs/examples/qdrant/scaling/horizontal-scaling/hscale-up.yaml
qdrantopsrequest.ops.kubedb.com/qdops-hscale-up created
Verify Qdrant scale-up completed successfully:
$ watch -n 3 kubectl get QdrantOpsRequest -n demo qdops-hscale-up
Every 3.0s: kubectl get QdrantOpsRequest -n demo qdops-hscale-up
NAME TYPE STATUS AGE
qdops-hscale-up HorizontalScaling Successful 3m57s
Now let’s verify that the number of nodes has increased:
$ kubectl get qdrant -n demo qdrant-sample -o=jsonpath='{.spec.replicas}{"\n"}'
5
$ kubectl get pods -n demo
NAME READY STATUS RESTARTS AGE
qdrant-sample-0 1/1 Running 0 10m
qdrant-sample-1 1/1 Running 0 10m
qdrant-sample-2 1/1 Running 0 10m
qdrant-sample-3 1/1 Running 0 2m
qdrant-sample-4 1/1 Running 0 1m
Scale Down
Here, we are going to scale down the cluster from 5 nodes to 4 nodes.
Create QdrantOpsRequest:
apiVersion: ops.kubedb.com/v1alpha1
kind: QdrantOpsRequest
metadata:
name: qdops-hscale-down
namespace: demo
spec:
type: HorizontalScaling
databaseRef:
name: qdrant-sample
horizontalScaling:
node: 4
Let’s create the QdrantOpsRequest CR we have shown above:
$ kubectl apply -f https://github.com/kubedb/docs/raw/v2026.10.12/docs/examples/qdrant/scaling/horizontal-scaling/hscale-down.yaml
qdrantopsrequest.ops.kubedb.com/qdops-hscale-down created
Verify Qdrant scale-down completed successfully:
$ watch -n 3 kubectl get QdrantOpsRequest -n demo qdops-hscale-down
Every 3.0s: kubectl get QdrantOpsRequest -n demo qdops-hscale-down
NAME TYPE STATUS AGE
qdops-hscale-down HorizontalScaling Successful 2m15s
Now let’s verify that the number of nodes has decreased:
$ kubectl get qdrant -n demo qdrant-sample -o=jsonpath='{.spec.replicas}{"\n"}'
4
$ kubectl get pods -n demo
NAME READY STATUS RESTARTS AGE
qdrant-sample-0 1/1 Running 0 14m
qdrant-sample-1 1/1 Running 0 14m
qdrant-sample-2 1/1 Running 0 14m
qdrant-sample-3 1/1 Running 0 6m
We have successfully performed horizontal scaling on the Qdrant cluster.
Next Steps
- Learn about backup and restore Qdrant using KubeStash.
- Detail concepts of Qdrant object.
- Want to hack on KubeDB? Check our contribution guidelines.
Cleaning Up
To clean up the Kubernetes resources created by this tutorial, run:
kubectl delete qdrant -n demo qdrant-sample
kubectl delete QdrantOpsRequest -n demo qdops-hscale-up qdops-hscale-down
































