复杂操作指并不是单纯的升级、升配、扩缩容,而是混合了部分或者所有意图的操作方式。Kubernetes 的声明式 API 要求我们高效地实现这样的操作,因此 operator 也支持了。
举个例子,我们将同时
- 修改 CN 的镜像为 polardbx/polardbx-sql:v2.0
- 修改 CDC 的配置为 8C32G
- 增加 DN 的节点,到 3 个
同样,我们可以用 kubectl edit
和 kubectl patch
的方式实现,这里演示 kubectl patch
的方式。
首先准备一个 patch 文件,
spec:
topology:
nodes:
cn:
template:
image: polardbx/polardbx-sql:v2.0
dn:
replicas: 3
cdc:
template:
resources:
limits:
cpu: 8
memory: 32Gi
执行下面的命令来进行上述操作:
kubectl patch --type='merge' pxc polardbx-test --patch-file patch.yaml
此时我们将同时观察到 CN、DN、CDC 的变化和数据搬迁:
kubectl get pxc polardbx-test -o wide
NAME PROTOCOL GMS CN DN CDC PHASE DISK STAGE REBALANCE VERSION AGE
polardbx-test 8.0 1/1 1/2 2/3 1/2 Upgrading 22.6 GiB 8.0.3-PXC-5.4.13-20220418/8.0.18 35d
kubectl get pxc polardbx-test -o wide
NAME PROTOCOL GMS CN DN CDC PHASE DISK STAGE REBALANCE VERSION AGE
polardbx-test 8.0 1/1 2/2 3/3 2/2 Upgrading 22.6 GiB RebalanceWatch 50% 8.0.3-PXC-5.4.13-20220418/8.0.18 35d
注:如《不可中断的情况 》中所说,数据搬迁中不可中断。