暂停与恢复

spec.podAnnotations["buf.red/pause-timestamp"] 非空时,Operator 会暂停一个实例。暂停会将受管工作负载副本缩减为零,并使该实例不可用。

安全要求

  • 在暂停之前停止客户端和写入。
  • 如果数据必须在 Pod 删除后仍然保留,请使用持久化存储。
  • 暂停不是备份。请先完成外部数据保护。
  • 请勿在扩缩容、重新平衡、升级、证书轮换或其他滚动更新期间暂停。

暂停

PAUSED_AT="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
kubectl -n default patch valkey valkey-cluster --type=merge \
  -p "{\"spec\":{\"podAnnotations\":{\"buf.red/pause-timestamp\":\"${PAUSED_AT}\"}}}"
kubectl -n default get valkey valkey-cluster -w

期望的阶段为 Paused。确认受管 Pod 已终止:

kubectl -n default get pods -l buf.red/name=valkey-cluster
kubectl -n default get pvc -l buf.red/name=valkey-cluster

恢复

使用 JSON merge patch 删除该 map 条目:

kubectl -n default patch valkey valkey-cluster --type=merge \
  -p '{"spec":{"podAnnotations":{"buf.red/pause-timestamp":null}}}'
kubectl -n default get valkey valkey-cluster -w

等待进入 Ready,验证所有预期成员以及 Cluster slots 或当前 primary,然后重新连接应用程序。