回收 PV
NebulaGraph Operator 使用持久化卷 PV(Persistent Volume)和持久化卷声明 PVC(Persistent Volume Claim)来存储持久化数据。如果用户不小心删除了一个 悦数图数据库 集群,默认 PV 和 PVC 对象及其数据仍可保留,以确保数据安全。
用户也可以在集群实例的配置文件中通过设置参数spec.enablePVReclaim为true来定义在删除集群后自动删除 PVC 以释放数据。至于在删除 PVC 后是否删除 PV,用户需要自定义 PV 的回收策略。参见 StorageClass 中设置 reclaimPolicy 和 PV Reclaiming 了解 PV 回收策略。
前提条件
在 K8s 中创建一个 悦数图数据库 集群。具体步骤,参见创建 悦数图数据库 集群。
操作步骤
以下示例使用名为nebula的集群、名为nebula_cluster.yaml的 YAML 配置文件,说明如何设置enablePVReclaim:
- 执行以下命令进入
nebula集群的编辑页面。
kubectl edit nebulaclusters.apps.nebula-graph.io nebula
- 在 YAML 文件的
spec配置项中,添加enablePVReclaim并设置其值为true。
apiVersion: apps.nebula-graph.io/v1alpha1
kind: NebulaCluster
metadata:
name: nebula
spec:
enablePVReclaim: true //设置其值为 true。
graphd:
image: vesoft/nebula-graphd
logVolumeClaim:
resources:
requests:
storage: 2Gi
storageClassName: fast-disks
replicas: 1
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 500m
memory: 500Mi
version: v3.12.0
imagePullPolicy: IfNotPresent
metad:
dataVolumeClaim:
resources:
requests:
storage: 2Gi
storageClassName: fast-disks
image: vesoft/nebula-metad
logVolumeClaim:
resources:
requests:
storage: 2Gi
storageClassName: fast-disks
replicas: 1
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 500m
memory: 500Mi
version: v3.12.0
nodeSelector:
nebula: cloud
reference:
name: statefulsets.apps
version: v1
schedulerName: default-scheduler
storaged:
dataVolumeClaims:
- resources:
requests:
storage: 2Gi
storageClassName: fast-disks
- resources:
requests:
storage: 2Gi
storageClassName: fast-disks
image: vesoft/nebula-storaged
logVolumeClaim:
resources:
requests:
storage: 2Gi
storageClassName: fast-disks
replicas: 3
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 500m
memory: 500Mi
version: v3.12.0
...
- 执行
kubectl apply -f nebula_cluster.yaml使上述更新生效。
在上述操作即enablePVReclaim设置为true后,当集群删除时,系统将会自动删除 PVC 以回收存储资源。是否删除 PV,取决于 PV 的回收策略。