12.3. 从持久性卷中恢复集群

如果持久性卷(PV)仍然存在,您可以从它们恢复 Kafka 集群。

您可能想要执行此操作,例如:

  • 命名空间被意外删除
  • 整个 OpenShift 集群会丢失,但 PV 会保留在基础架构中

12.3.1. 从命名空间删除中恢复

由于持久性卷和命名空间之间的关系,可以从删除命名空间中进行恢复。A PersistentVolume (PV)是位于命名空间外的存储资源。PV 使用 PersistentVolumeClaim (PVC)挂载到 Kafka pod 中,该 PVC 驻留在一个命名空间内。

PV 的重新声明(reclaim)策略指定了在删除命名空间时集群如何操作。如果重新声明策略被设置为:

  • 删除 (默认)当 PVC 在命名空间中被删除时会删除 PV
  • 保留,在删除命名空间时不会删除 PV

为确保意外删除命名空间时,您可以从 PV 中恢复该策略,必须在 PV 规格中使用 persistentVolumeReclaimPolicy 属性重置该 策略

apiVersion: v1
kind: PersistentVolume
# ...
spec:
  # ...
  persistentVolumeReclaimPolicy: Retain

另外,PV 可以继承关联的存储类的重新声明策略。存储类用于动态卷分配。

通过为存储类配置 reclaimPolicy 属性,使用存储类的 PV 会使用适当的重新声明策略创建。使用 storageClassName 属性为 PV 配置存储类。

apiVersion: v1
kind: StorageClass
metadata:
  name: gp2-retain
parameters:
  # ...
# ...
reclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
# ...
spec:
  # ...
  storageClassName: gp2-retain
注意

如果您使用 Retain 作为重新声明策略,但要删除整个集群,则需要手动删除 PV。否则它们将不会被删除,并可能导致不必要的资源开支。