磁盘扩容
KubeBlocks 支持 Pod 存储磁盘扩容。
备注
磁盘扩容将触发 Pod 重启。重启后,主节点可能会发生变化。
开始之前
确保集群处于 Running
状态,否则后续操作可能会失败。
- kbcli
- kubectl
kbcli cluster list mycluster -n demo
>
NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
mycluster demo postgresql postgresql-14.8.0 Delete Running Sep 28,2024 16:47 UTC+0800
kubectl -n demo get cluster mycluster
>
NAME CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS AGE
mycluster postgresql postgresql-14.8.0 Delete Running 29m
步骤
- OpsRequest
- 编辑集群 YAML 文件
- kbcli
应用 OpsRequest。根据需求更改 storage 的值,并执行以下命令来更改集群的存储容量。
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: postgresql
volumeClaimTemplates:
- name: data
storage: "40Gi"
EOF验证磁盘扩容操作是否成功。
kubectl get ops -n demo
>
NAMESPACE NAME TYPE CLUSTER STATUS PROGRESS AGE
demo ops-volume-expansion VolumeExpansion mycluster Succeed 3/3 6m当 OpsRequest 状态为
Succeed
或集群状态再次回到Running
后,查看对应的集群资源是否变更。kubectl describe cluster mycluster -n demo
>
......
Volume Claim Templates:
Name: data
Spec:
Access Modes:
ReadWriteOnce
Resources:
Requests:
Storage: 40Gi
更改集群 YAML 文件中
spec.componentSpecs.volumeClaimTemplates.spec.resources
的值。spec.componentSpecs.volumeClaimTemplates.spec.resources
定义了 Pod 的存储资源信息,更改此值会触发磁盘扩容。apiVersion: apps.kubeblocks.io/v1alpha1
kind: Cluster
metadata:
name: mycluster
namespace: demo
spec:
clusterDefinitionRef: postgresql
clusterVersionRef: postgresql-14.8.0
componentSpecs:
- name: postgresql
componentDefRef: postgresql
replicas: 1
volumeClaimTemplates:
- name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 40Gi # 修改该参数值
terminationPolicy: Delete当 OpsRequest 状态为
Succeed
或集群状态再次回到Running
后,查看对应的集群资源是否变更。kubectl describe cluster mycluster -n demo
>
......
Volume Claim Templates:
Name: data
Spec:
Access Modes:
ReadWriteOnce
Resources:
Requests:
Storage: 40Gi
更改配置。
配置参数
--components
、--volume-claim-templates
和--storage
,并执行以下命令。kbcli cluster volume-expand mycluster --components="postgresql" -n demo \
--volume-claim-templates="data" --storage="40Gi"--components
表示需扩容的组件名称。--volume-claim-templates
表示组件中的 VolumeClaimTemplate 名称。--storage
表示磁盘需扩容至的大小。
验证扩容操作是否成功。
查看 OpsRequest 进程。
执行磁盘扩容命令后,KubeBlocks 会自动输出查看 OpsRequest 进程的命令,可通过该命令查看 OpsRequest 进程的细节,包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为
Succeed
时,表明这一进程已完成。kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
查看集群状态。
kbcli cluster list mycluster -n demo
>
NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
mycluster demo postgresql postgresql-14.8.0 Delete Updating Sep 28,2024 16:47 UTC+0800- STATUS=Updating 表示扩容正在进行中。
- STATUS=Running 表示扩容已完成。
当 OpsRequest 状态为
Succeed
或集群状态再次回到Running
后,检查资源规格是否已按要求变更。kbcli cluster describe mycluster -n demo