### PV 的回收机制流程:
| 步骤 | 描述 |
| -------- | -------- |
| 1 | 创建一个 PV 对象 |
| 2 | 创建一个 PVC 对象,并指定对应的 PV |
| 3 | PVC 绑定到 Pod 上 |
| 4 | Pod 使用 PVC 进行持久化存储 |
| 5 | 删除 Pod |
| 6 | 解除 PVC 与 Pod 的绑定 |
| 7 | 删除 PVC |
| 8 | 将 PV 标记为 Released(可选,根据回收策略决定是否执行) |
| 9 | 删除 PV |
### 实现 PV 的回收机制:
1. 创建 PV 对象:
```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: manual
hostPath:
path: /data
```
- 在这个 YAML 文件中,定义了一个名为 my-pv 的 PV 对象,设置了存储容量、访问模式、回收策略等参数。
2. 创建 PVC 对象:
```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
storageClassName: manual
```
- 这里创建了一个名为 my-pvc 的 PVC 对象,指定了存储容量、访问模式、存储类等信息。
3. 部署 Pod 并绑定 PVC:
```yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: "/data"
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc
```
- 在这个 Pod 的定义中,指定了挂载 PVC 到容器内的路径。
4. 删除 Pod 时, PVC 自动解绑:
```bash
kubectl delete pod my-pod
```
5. 删除 PVC:
```bash
kubectl delete pvc my-pvc
```
6. 删除 PV:
```bash
kubectl delete pv my-pv
```
通过上述步骤和代码示例,你已经掌握了 K8S PV 的回收机制的基本流程和操作方法。当 PV 不再需要使用时,及时释放资源是非常重要的,可以根据具体需求选择不同的回收策略来管理持久化存储资源。希望这篇文章对你理解和应用 K8S PV 回收机制有所帮助,祝你学习顺利!