删除实例

删除 Valkey 资源会移除其由 operator 管理的工作负载和 Services。 此操作具有破坏性,不属于备份流程。

预期影响

资源或行为预期结果
Data Pods 和 StatefulSets通过 owner references 和 finalizers 删除。
Cluster、Failover 和 Sentinel 子自定义资源(CRs)随所属实例一起删除。
Services 和生成的配置在其 owner 被删除时移除。
访问控制列表(ACL)User 资源由 operator 管理的内置 User 和所属自定义用户可被删除。请先记录所需定义。
Persistent volume claims(PVCs)和底层卷在检查的基线版本中,生成的 PVC 不包含指向该实例的 owner reference,且没有任何 Operator 路径会删除它们,因此无论 spec.storage.retainAfterDeleted 如何设置,删除后它们都会保留。请以交付的构建版本为准进行验证,并显式删除不需要的 PVC。
外部备份或导出不由 Operator 管理,必须由其所属系统处理。

在删除之前

  1. 停止应用写入,并确认客户端不再使用该实例。

  2. 完成并验证你的外部备份或数据导出。

  3. 记录 PVC 及其回收策略:

    kubectl -n <namespace> get pvc -l buf.red/name=<name> -o wide
    kubectl get storageclass
  4. 保护任何必须保留的 PVC。在检查的基线版本中, spec.storage.retainAfterDeleted 不起作用:生成的 PVC 在删除后始终会 保留在原处。不要将残留的 PVC 视为已删除的数据,也不要在未 验证的情况下假定交付的构建版本行为完全一致。

删除实例

kubectl -n <namespace> delete valkey <name>

观察删除和 finalizer 处理:

kubectl -n <namespace> get valkey <name> -w
kubectl -n <namespace> get cluster,failover,sentinel,user \
  -l buf.red/name=<name>

Valkey 资源消失后,在显式删除之前检查剩余的 PVC 和 Secret:

kubectl -n <namespace> get pvc,secret -l buf.red/name=<name>

还要确认没有残留生成的工作负载或 Service:

kubectl -n <namespace> get cluster,failover,sentinel,user \
  -l buf.red/name=<name>
kubectl -n <namespace> get statefulset,pod,service,configmap \
  -l buf.red/name=<name>

除非产品支持团队已确认剩余的子资源及数据保留影响,否则不要移除由 Operator 添加的 finalizer 以强制删除。