Introduction
Configuration
High Availability
You can expand the storage volume size of each pod.
Volume expansion triggers pod restart, all pods restart in the order of learner -> follower -> leader and the leader pod may change after the operation.
Check whether the cluster status is Running. Otherwise, the following operations may fail.
kubectl get cluster mycluster -n demo
>
NAME CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS AGE
mycluster apecloud-mysql ac-mysql-8.0.30 Delete Running 27m
kbcli cluster list mycluster -n demo
>
NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
mycluster demo apecloud-mysql ac-mysql-8.0.30 Delete Running Sep 19,2024 16:01 UTC+0800
Apply an OpsRequest. Change the value of storage according to your need and 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
namespace: demo
spec:
clusterName: mycluster
type: VolumeExpansion
volumeExpansion:
- componentName: mysql
volumeClaimTemplates:
- name: data
storage: "40Gi"
EOF
Validate the volume expansion operation.
kubectl get ops -n demo
>
NAME TYPE CLUSTER STATUS PROGRESS AGE
mycluster-volumeexpansion-8257f VolumeExpansion mycluster Succeed 3/3 4m40s
If an error occurs, you can troubleshoot with kubectl describe ops -n demo command to view the events of this operation.
After the cluster status is Running again, check whether the corresponding cluster resources change.
kubectl describe cluster mycluster -n demo
Change the value of spec.componentSpecs.volumeClaimTemplates.spec.resources in the cluster YAML file.
spec.componentSpecs.volumeClaimTemplates.spec.resources is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
kubectl edit cluster mycluster -n demo
Edit the value of spec.componentSpecs.volumeClaimTemplates.spec.resources.
apiVersion: apps.kubeblocks.io/v1alpha1
kind: Cluster
metadata:
name: mycluster
namespace: demo
spec:
clusterDefinitionRef: apecloud-mysql
clusterVersionRef: ac-mysql-8.0.30
componentSpecs:
- name: mysql
componentDefRef: mysql
replicas: 3
volumeClaimTemplates:
- name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 40Gi # Change the volume storage size
terminationPolicy: Delete
Check whether the corresponding cluster is running and whether resources change.
kubectl get cluster mycluster -n demo
kubectl describe cluster mycluster -n demo
Change configuration.
Configure the values of --components, --volume-claim-templates, and --storage, and run the command below to expand the volume.
kbcli cluster volume-expand mycluster --components="mysql" --volume-claim-templates="data" --storage="40Gi" -n demo
--components describes the component name for volume expansion.--volume-claim-templates describes the VolumeClaimTemplate names in components.--storage describes the volume storage size.Validate the volume expansion operation.
View the OpsRequest progress.
KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is Succeed, this OpsRequest is completed.
kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
View the cluster status.
kbcli cluster list mycluster -n demo
>
NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
mycluster demo apecloud-mysql ac-mysql-8.0.30 Delete Updating Sep 19,2024 16:01 UTC+0800
After the OpsRequest status is Succeed or the cluster status is Running again, check whether the corresponding resources change.
kbcli cluster describe mycluster -n demo