手动扩缩容 Kubernetes 上的 TiDB 集群
本文介绍如何对部署在 Kubernetes 上的 TiDB 集群进行手动水平扩缩容和垂直扩缩容。
水平扩缩容
水平扩缩容操作是指通过增加或减少组件的 Pod 的数量,来达到集群扩缩容的目的。可通过修改组件的 replicas
参数来控制 Pod 数量,从而实现扩容或缩容。
- 如果要进行扩容操作,可将某个组件的
replicas
值调大。扩容操作会增加组件 Pod,直到 Pod 数量与replicas
值相等。 - 如果要进行缩容操作,可将某个组件的
replicas
值调小。缩容操作会删除组件 Pod,直到 Pod 数量与replicas
值相等。
如果要对 TiDB 集群进行水平扩缩容,你可以使用 kubectl
修改对应组件的 Component Group Custom Resource (CR) 对象中的 spec.replicas
至期望值。
按需修改 TiDB 集群组件的
replicas
值。例如,执行以下命令可将 PD 的replicas
值设置为3
:kubectl patch -n ${namespace} pdgroup ${name} --type merge --patch '{"spec":{"replicas":3}}'查看 Kubernetes 集群中对应组件的 Component Group CR 是否更新为期望的配置。例如,执行以下命令查看 PDGroup CR:
kubectl get pdgroup ${name} -n ${namespace}上述命令输出的
DESIRED
的值预期应与你之前配置的值一致。观察 Pod 是否新增或者减少:
kubectl -n ${namespace} get pod -w当所有组件的 Pod 数量都达到了预设值,并且都进入
Running
状态后,水平扩缩容完成。PD 和 TiDB 通常需要 10 到 30 秒左右的时间进行扩容或者缩容。
TiKV 组件由于涉及到数据搬迁,通常需要 3 到 5 分钟来进行扩容或者缩容。
垂直扩缩容
垂直扩缩容操作指的是通过增加或减少 Pod 的资源限制,来达到集群扩缩容的目的。垂直扩缩容本质上是 Pod 滚动升级的过程。
如果要对 PD、TiKV、TiDB、TiProxy、TiFlash 或 TiCDC 进行垂直扩缩容,通过 kubectl
修改对应的 Component Group CR 对象的 spec.template.spec.resources
至期望值。
查看垂直扩缩容进度
kubectl -n ${namespace} get pod -w
当所有 Pod 都重建完毕进入 Running
状态后,垂直扩缩容完成。
扩缩容故障诊断
无论是水平扩缩容、或者是垂直扩缩容,都可能遇到资源不够时造成 Pod 出现 Pending 的情况。可以参考 Pod 处于 Pending 状态来进行处理。