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.
Restart Qdrant
KubeDB supports restarting the Qdrant database via a QdrantOpsRequest. Restarting is useful if some pods are stuck in a non-running phase or are not working correctly. This tutorial will show you how to use that.
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.Now, install
KubeDBin your cluster following the steps here.You should be familiar with the following
KubeDBconcepts:
To keep things isolated, this tutorial uses 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/restart folder in GitHub repository kubedb/docs.
Deploy Qdrant
In this section, we are going to deploy a Qdrant database using KubeDB.
apiVersion: kubedb.com/v1alpha2
kind: Qdrant
metadata:
name: qdrant-sample
namespace: demo
spec:
version: "1.17.0"
replicas: 3
storage:
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.6.5-rc.1/docs/examples/qdrant/restart/qdrant.yaml
qdrant.kubedb.com/qdrant-sample created
Now, wait until qdrant-sample has status Ready:
$ kubectl get qdrant -n demo
NAME VERSION STATUS AGE
qdrant-sample 1.17.0 Ready 3m47s
Apply Restart OpsRequest
apiVersion: ops.kubedb.com/v1alpha1
kind: QdrantOpsRequest
metadata:
name: qdops-restart
namespace: demo
spec:
type: Restart
databaseRef:
name: qdrant-sample
timeout: 3m
apply: Always
spec.typespecifies the type of the OpsRequest.spec.databaseRefholds the name of the Qdrant database. The db should be available in the same namespace as the OpsRequest.- The meaning of
spec.timeout&spec.applyfields can be found here.
Let’s create the QdrantOpsRequest CR we have shown above,
$ kubectl create -f https://github.com/kubedb/docs/raw/v2026.6.5-rc.1/docs/examples/qdrant/restart/ops-request.yaml
qdrantopsrequest.ops.kubedb.com/qdops-restart created
Now the Ops-manager operator will restart the Qdrant pods one by one, waiting for each pod to come back to Running state before proceeding to the next.
$ kubectl get qdops -n demo qdops-restart
NAME TYPE STATUS AGE
qdops-restart Restart Successful 66s
$ kubectl get qdops -n demo qdops-restart -o yaml
apiVersion: ops.kubedb.com/v1alpha1
kind: QdrantOpsRequest
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"ops.kubedb.com/v1alpha1","kind":"QdrantOpsRequest","metadata":{"annotations":{},"name":"qdops-restart","namespace":"demo"},"spec":{"apply":"Always","databaseRef":{"name":"qdrant-sample"},"timeout":"3m","type":"Restart"}}
creationTimestamp: "2026-05-15T05:43:05Z"
generation: 1
name: qdops-restart
namespace: demo
resourceVersion: "3357120"
uid: f90d628f-1db2-4fbc-a20d-e449ab7215a8
spec:
apply: Always
databaseRef:
name: qdrant-sample
maxRetries: 1
timeout: 3m
type: Restart
status:
conditions:
- lastTransitionTime: "2026-05-15T05:43:05Z"
message: Qdrant ops-request has started to restart Qdrant nodes
observedGeneration: 1
reason: Restart
status: "True"
type: Restart
- lastTransitionTime: "2026-05-15T05:44:07Z"
message: Successfully Restarted Qdrant nodes
observedGeneration: 1
reason: RestartNodes
status: "True"
type: RestartNodes
- lastTransitionTime: "2026-05-15T05:43:17Z"
message: get pod; ConditionStatus:True; PodName:qdrant-sample-0
observedGeneration: 1
status: "True"
type: GetPod--qdrant-sample-0
- lastTransitionTime: "2026-05-15T05:43:18Z"
message: evict pod; ConditionStatus:True; PodName:qdrant-sample-0
observedGeneration: 1
status: "True"
type: EvictPod--qdrant-sample-0
- lastTransitionTime: "2026-05-15T05:43:32Z"
message: running pod; ConditionStatus:True; PodName:qdrant-sample-0
observedGeneration: 1
status: "True"
type: RunningPod--qdrant-sample-0
- lastTransitionTime: "2026-05-15T05:43:37Z"
message: get pod; ConditionStatus:True; PodName:qdrant-sample-1
observedGeneration: 1
status: "True"
type: GetPod--qdrant-sample-1
- lastTransitionTime: "2026-05-15T05:43:38Z"
message: evict pod; ConditionStatus:True; PodName:qdrant-sample-1
observedGeneration: 1
status: "True"
type: EvictPod--qdrant-sample-1
- lastTransitionTime: "2026-05-15T05:43:42Z"
message: running pod; ConditionStatus:True; PodName:qdrant-sample-1
observedGeneration: 1
status: "True"
type: RunningPod--qdrant-sample-1
- lastTransitionTime: "2026-05-15T05:43:47Z"
message: get pod; ConditionStatus:True; PodName:qdrant-sample-2
observedGeneration: 1
status: "True"
type: GetPod--qdrant-sample-2
- lastTransitionTime: "2026-05-15T05:43:48Z"
message: evict pod; ConditionStatus:True; PodName:qdrant-sample-2
observedGeneration: 1
status: "True"
type: EvictPod--qdrant-sample-2
- lastTransitionTime: "2026-05-15T05:44:02Z"
message: running pod; ConditionStatus:True; PodName:qdrant-sample-2
observedGeneration: 1
status: "True"
type: RunningPod--qdrant-sample-2
- lastTransitionTime: "2026-05-15T05:44:08Z"
message: Controller has successfully restarted the Qdrant replicas
observedGeneration: 1
reason: Successful
status: "True"
type: Successful
observedGeneration: 1
phase: Successful
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 cleanup the Kubernetes resources created by this tutorial, run:
$ kubectl delete qdrantopsrequest -n demo qdops-restart
qdrantopsrequest.ops.kubedb.com "qdops-restart" deleted
$ kubectl delete qdrant -n demo qdrant-sample
qdrant.kubedb.com "qdrant-sample" deleted
$ kubectl delete ns demo
namespace "demo" deleted































