垂直扩缩容
你可以通过更改资源需求和限制(CPU 和存储)来垂直扩展集群。例如,可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
本文档以 MySQL 为示例,演示如何对集群进行垂直扩缩容。
备注
从 v0.9.0 开始,MySQL 和 PostgreSQL 集群在进行水平扩缩容后,KubeBlocks 会根据新的规格自动匹配合适的配置模板。这因为 KubeBlocks 在 v0.9.0 中引入了动态配置功能。该功能简化了配置参数的过程,节省了时间和精力,并减少了由于配置错误引起的性能问题。有关详细说明,请参阅配置。
开始之前
查看集群状态是否为 Running
,否则,后续操作可能失败。
kubectl get cluster mycluster
>
NAME CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS AGE
mycluster mysql mysql-8.0.33 Delete Running 4d18h
步骤
可通过以下两种方式进行垂直扩缩容。
- OpsRequest
- 修改集群 YAML 文件
对指定集群应用 OpsRequest,可按需修改参数值。
kubectl apply -f - <<EOF
apiVersion: apps.kubeblocks.io/v1alpha1
kind: OpsRequest
metadata:
name: ops-vertical-scaling
namespace: demo
spec:
clusterName: mycluster
type: VerticalScaling
verticalScaling:
- componentName: mysql
requests:
memory: "2Gi"
cpu: "1"
limits:
memory: "4Gi"
cpu: "2"
EOF查看运维任务状态,验证该任务是否执行成功。
kubectl get ops -n demo
>
NAMESPACE NAME TYPE CLUSTER STATUS PROGRESS AGE
demo ops-vertical-scaling VerticalScaling mycluster Succeed 3/3 6m如果有报错,可执行
kubectl describe ops -n demo
命令查看该运维操作的相关事件,协助排障。查看相应资源是否变更。
kubectl describe cluster mycluster -n demo
修改 YAML 文件中
spec.componentSpecs.resources
的配置。spec.componentSpecs.resources
控制资源的请求值和限制值,修改参数值将触发垂直扩缩容。kubectl edit cluster mycluster -n demo
>
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
resources: # 修改参数值
requests:
memory: "2Gi"
cpu: "1"
limits:
memory: "4Gi"
cpu: "2"
volumeClaimTemplates:
- name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
terminationPolicy: Delete查看相应资源是否变更。
kubectl describe cluster mycluster -n demo