Skip to main content
Version: release-0.8

Expand volume

You can expand the storage volume size of each pod.

note

Volume expansion triggers a concurrent restart and the leader pod may change after the operation.

Before you start

Check whether the cluster STATUS is Running. Otherwise, the following operations may fail.

kbcli cluster list <name>

Example

kbcli cluster list pg-cluster
>
NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
pg-cluster default postgresql postgresql-14.7.0 Delete Running Mar 3,2023 10:29 UTC+0800

Steps

  1. Change configuration. There are 3 ways to apply volume expansion.

    Option 1. (Recommended) Use kbcli

    Configure the values of --components, --volume-claim-templates, and --storage, and run the command below to expand the volume.

    kbcli cluster volume-expand pg-cluster --components="postgresql" \
    --volume-claim-templates="data" --storage="2Gi"
    • --components describes the component name for volume expansion.
    • --volume-claim-templates describes the VolumeClaimTemplate names in components.
    • --storage describes the volume storage size.

    Option 2. Create an OpsRequest

    Run the command below to expand the volume of a cluster.

    kubectl apply -f - <<EOF
    apiVersion: apps.kubeblocks.io/v1alpha1
    kind: OpsRequest
    metadata:
    name: ops-volume-expansion
    spec:
    clusterRef: pg-cluster
    type: VolumeExpansion
    volumeExpansion:
    - componentName: postgresql
    volumeClaimTemplates:
    - name: data
    storage: "2Gi"
    EOF

    Option 3. Change the YAML file of the cluster

    Change the value of spec.components.volumeClaimTemplates.spec.resources in the cluster YAML file. spec.components.volumeClaimTemplates.spec.resources is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.

    apiVersion: apps.kubeblocks.io/v1alpha1
    kind: Cluster
    metadata:
    name: pg-cluster
    namespace: default
    spec:
    clusterDefinitionRef: postgresql
    clusterVersionRef: postgresql-14.7.0
    componentSpecs:
    - name: postgresql
    componentDefRef: postgresql
    replicas: 1
    volumeClaimTemplates:
    - name: data
    spec:
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 1Gi # Change the volume storage size.
    terminationPolicy: Halt
  2. Validate the volume expansion.

    kbcli cluster list <name>

    Example

    kbcli cluster list pg-cluster
    >
    NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
    pg-cluster default postgresql postgresql-14.7.0 Delete VolumeExpanding Apr 10,2023 16:27 UTC+0800
    • STATUS=VolumeExpanding: it means the volume expansion is in progress.
    • STATUS=Running: it means the volume expansion operation has been applied.