KubeBlocks
BlogsKubeBlocks Cloud
⌘K
​
Overview
Quickstart

Operations

Lifecycle Management
Vertical Scaling
Horizontal Scaling
Volume Expansion
Manage Qdrant Services
Minor Version Upgrade
Decommission Qdrant Replica

Backup And Restores

Create BackupRepo
Create Full Backup
Scheduled Backups
Restore Qdrant Cluster

Monitoring

Observability for Qdrant Clusters

tpl

  1. Prerequisites
  2. Deploy a Qdrant Cluster
  3. Verifying the Deployment
  4. List All Available Qdrant Versions
  5. Upgrading the Qdrant Version
    1. Check compatible versions for the same ComponentDefinition
    2. Apply the Upgrade
  6. Verification
    1. Monitor the Upgrade Process
    2. Check Cluster Status
    3. Verify the Qdrant Version
  7. Summary

Upgrading the Minor Version of a Qdrant Cluster in KubeBlocks

This guide walks you through the deployment and minor version upgrade of a Qdrant Cluster managed by KubeBlocks, ensuring minimal downtime during the process.

Prerequisites

Before proceeding, ensure the following:

  • Environment Setup:
    • A Kubernetes cluster is up and running.
    • The kubectl CLI tool is configured to communicate with your cluster.
    • KubeBlocks CLI and KubeBlocks Operator are installed. Follow the installation instructions here.
  • Namespace Preparation: To keep resources isolated, create a dedicated namespace for this tutorial:
kubectl create ns demo
namespace/demo created

Deploy a Qdrant Cluster

KubeBlocks uses a declarative approach for managing Qdrant Clusters. Below is an example configuration for deploying a Qdrant Cluster with 3 replicas.

Apply the following YAML configuration to deploy the cluster:

apiVersion: apps.kubeblocks.io/v1
kind: Cluster
metadata:
  name: qdrant-cluster
  namespace: demo
spec:
  terminationPolicy: Delete
  clusterDef: qdrant
  topology: cluster
  componentSpecs:
    - name: qdrant
      serviceVersion: 1.10.0
      replicas: 3
      resources:
        limits:
          cpu: "0.5"
          memory: "0.5Gi"
        requests:
          cpu: "0.5"
          memory: "0.5Gi"
      volumeClaimTemplates:
        - name: data
          spec:
            storageClassName: ""
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 20Gi

Verifying the Deployment

Monitor the cluster status until it transitions to the Running state:

kubectl get cluster qdrant-cluster -n demo -w

Example Output:

NAME             CLUSTER-DEFINITION   TERMINATION-POLICY   STATUS     AGE
qdrant-cluster   qdrant               Delete               Creating   49s
qdrant-cluster   qdrant               Delete               Running    62s

Once the cluster status becomes Running, your Qdrant Cluster is ready for use.

TIP

If you are creating the cluster for the very first time, it may take some time to pull images before running.

List All Available Qdrant Versions

Use the following command to display the Qdrant versions supported by your KubeBlocks installation:

kubectl get cmpv qdrant

Expected Output:

NAME     VERSIONS                                STATUS      AGE
qdrant   1.14.0,1.10.0,1.8.4,1.8.1,1.7.3,1.5.0   Available   26d

Note: The list of supported versions may vary depending on your KubeBlocks version.

Upgrading the Qdrant Version

Check compatible versions for the same ComponentDefinition

Step 1. Get the list of ComponentDefinition associated with a given ComponentVersion

kubectl get cmpv qdrant -ojson | jq -r '.metadata.annotations."componentversion.kubeblocks.io/compatible-definitions"' | tr ',' '\n'
Example Output
qdrant-1.0.0

Step 2. Get the list of ComponentDefinition associated with a given ComponentVersion

kubectl get cmpv qdrant -o json | jq -r '.spec.compatibilityRules[] | select(.compDefs | any(startswith("^qdrant"))) | .releases[]'

This returns versions compatible with ComponentDefinition named qdrant:

Example Output
1.5.0
1.7.3
1.8.1
1.8.4
1.10.0
1.14.0

Apply the Upgrade

To upgrade the Qdrant version, modify the serviceVersion field in the Cluster resource. In this example, we will upgrade the Qdrant version from 1.10.0 to 1.14.0

Option 1: Using OpsRequest

You can upgrade the cluster using an OpsRequest:

apiVersion: operations.kubeblocks.io/v1alpha1
kind: OpsRequest
metadata:
  name: qdrant-upgrade
  namespace: demo
spec:
  # Specifies the name of the Cluster resource that this operation is targeting.
  clusterName: qdrant-cluster
  type: Upgrade
  upgrade:
    components:
    - componentName: qdrant
      # Specifies the desired service version of component
      serviceVersion: "1.14.0"

Option 1: Using the Declarative Cluster API

Alternatively, you may stop the cluster by setting the spec.componentSpecs.serviceVersion field in the cluster configuration:

apiVersion: apps.kubeblocks.io/v1
kind: Cluster
metadata:
name: qdrant-cluster
namespace: demo
spec:
terminationPolicy: Delete
clusterDef: qdrant
topology: cluster
componentSpecs:
  - name: qdrant
    serviceVersion: 1.14.0  # set to 1.14.0 for upgrading
    replicas: 3
    resources:
      limits:
        cpu: "0.5"
        memory: "0.5Gi"
      requests:
        cpu: "0.5"
        memory: "0.5Gi"
    volumeClaimTemplates:
      - name: data
        spec:
          storageClassName: ""
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 20Gi

Verification

Monitor the Upgrade Process

Check OpsRequest progress:

kubectl get ops -n demo qdrant-upgrade -w

Example Output:

NAME             TYPE      CLUSTER          STATUS    PROGRESS   AGE
qdrant-upgrade   Upgrade   qdrant-cluster   Succeed   3/3        8m13s

Check pods:

kubectl get pods -n demo -l app.kubernetes.io/instance=qdrant-cluster

Expected Output:

NAME                      READY   STATUS    RESTARTS        AGE
qdrant-cluster-qdrant-0   2/2     Running   1 (7m23s ago)   13m
qdrant-cluster-qdrant-1   2/2     Running   1 (7m49s ago)   12m
qdrant-cluster-qdrant-2   2/2     Running   1 (7m59s ago)   12m

Key Observations:

  • Pods are not recreated, RESTARTS counter increased by one.
  • Pods are updated one by one in pod ordinal order, from highest to lowest

Check Cluster Status

Ensure the cluster is in the Running state:

kubectl get cluster qdrant-cluster -n demo -w

Expected Output:

NAME             CLUSTER-DEFINITION   TERMINATION-POLICY    STATUS    AGE
qdrant-cluster   qdrant               Delete               Running   17m

Verify the Qdrant Version

Connect to the upgraded instances and verify the Qdrant version:

kubectl exec -ti -n demo qdrant-cluster-qdrant-0 -c kbagent -- \
   curl http://127.0.0.1:6333

Expected Output:

curl http://127.0.0.1:6333
{"title":"qdrant - vector search engine","version":"1.14.0","commit":"3617a0111fc8590c4adcc6e88882b63ca4dda9e7"}%

Summary

In this guide, you learned how to:

  • Deploy a Qdrant Cluster using KubeBlocks.
  • Perform a rolling upgrade of the Qdrant minor version with minimal downtime.
  • Verify that the upgrade was successful.

© 2025 ApeCloud PTE. Ltd.