更新与扩缩容

修改所属的 Valkey 资源。不要编辑子级 ClusterFailoverSentinel、StatefulSet 或 Service 资源,因为协调会覆盖这些更改。

扩缩容 Cluster

此补丁会将一个 Cluster 从三个分片扩展到四个分片,同时保持每个分片中有两个成员:

kubectl -n default patch valkey valkey-cluster --type=merge \
  -p '{"spec":{"replicas":{"shards":4,"replicasOfShard":2}}}'
kubectl -n default get valkey valkey-cluster -w

阶段可能会经过 InitializingRebalancing。在返回 Ready 之前,不要启动另一次拓扑更改。使用以下命令检查槽位进度:

kubectl -n default get valkey valkey-cluster \
  -o jsonpath='{.status.phase}{"\n"}{.status.nodes}{"\n"}'
kubectl -n default exec <ready-cluster-pod> -c valkey -- \
  valkey-cli CLUSTER INFO

缩减分片会迁移 slots 并移除工作负载。在减少分片数量之前,请确认容量和可用内存。

有关容量规划、进度解读、槽位验证和故障处理,请参阅 Scale Cluster shards

更改每个分片的成员数

kubectl -n default patch valkey valkey-cluster --type=merge \
  -p '{"spec":{"replicas":{"shards":4,"replicasOfShard":3}}}'

该字段表示成员总数,而不是在主节点之外增加的副本数。取值范围为 1–5。值为 1 时会取消主从冗余。

对于 Failover 或 从节点,shards 必须保持为 1;仅更改数据成员数量:

kubectl -n default patch valkey valkey-failover --type=merge \
  -p '{"spec":{"replicas":{"shards":1,"replicasOfShard":3}}}'

更改计算资源

同时修改 requests 和 limits。Pod 模板更改会导致工作负载替换:

kubectl -n default patch valkey valkey-cluster --type=merge -p '
{
  "spec": {
    "resources": {
      "requests": {"cpu": "1", "memory": "2Gi"},
      "limits": {"cpu": "1", "memory": "2Gi"}
    }
  }
}'

在应用补丁之前,请确认目标节点具有足够的可调度资源。监控 Pods 和 Events 中是否出现 Pending、驱逐或内存限制终止。

需要特殊处理的更改

  • 仅在使用 Upgrade Valkey 操作步骤时更改 spec.version。降级会被拒绝。
  • spec.arch 视为不可变。更改架构时,请重新创建并迁移数据;Operator 没有记录在案的原地转换工作流。
  • storageClassName、persistent volume claim (PVC) 访问模式以及现有 PVC 大小视为存储平台操作。Operator 不会实现通用的卷迁移工作流。
  • 一次只应用一种拓扑、版本、存储或访问更改,并在进行下一次更改前等待 Ready