pv中的persistentVolumeReclaimPolicy
时间: 2024-04-20 10:24:05 浏览: 18
pv中的persistentVolumeReclaimPolicy字段指定了当与持久化卷(persistent volume)关联的持久化卷声明(persistent volume claim)被删除后,持久化卷应该如何处理的策略。该字段有以下几个可选值:
- Retain:保留持久化卷。在持久化卷声明被删除后,持久化卷将不会被自动删除,需要手动进行清理。
- Delete:删除持久化卷。在持久化卷声明被删除后,持久化卷将被自动删除。
- Recycle:回收持久化卷。在持久化卷声明被删除后,持久化卷的内容将被清空,可以被其他声明重新使用。这个策略已被废弃,不再推荐使用。
持久化卷声明是用于向Kubernetes集群请求特定存储资源的对象,而持久化卷是用于提供这些存储资源的对象。通过设置persistentVolumeReclaimPolicy字段,可以控制在删除持久化卷声明时对应的持久化卷如何处理。
相关问题
k8s中pv和pvc的yaml文件
以下是一个典型的 Kubernetes PV(永久存储卷)的 YAML 文件示例:
```
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /mnt/data
```
上述 YAML 文件定义了一个名为 `my-pv` 的 PV,它具有 1GB 的存储空间(`capacity`),支持单个节点的读写访问(`accessModes`),当 PVC(永久存储卷声明)被删除时保留 PV 中的数据(`persistentVolumeReclaimPolicy`),使用名为 `local-storage` 的存储类(`storageClassName`),并且使用本地路径 `/mnt/data` 作为存储卷的路径(`local`)。
以下是一个典型的 Kubernetes PVC(永久存储卷声明)的 YAML 文件示例:
```
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
storageClassName: local-storage
```
上述 YAML 文件定义了一个名为 `my-pvc` 的 PVC,请求 500MB 的存储空间(`resources`),支持单个节点的读写访问(`accessModes`),并且使用名为 `local-storage` 的存储类(`storageClassName`)。
PV 和 PVC 的 YAML 文件定义的内容可以根据实际需求进行修改。
k8s local PV 创建过程
Kubernetes(简称为K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。在K8s中,可以使用本地持久化卷(Local PV)来将本地磁盘挂载到容器中,为应用程序提供持久化存储。
下面是创建Local PV的步骤:
1. 创建本地存储类(StorageClass)
首先,需要创建一个本地存储类来定义如何创建Local PV。以下是一个创建名为`local-storage`的本地存储类的示例:
```
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
```
在这个例子中,`provisioner`字段设置为`kubernetes.io/no-provisioner`,这意味着不需要外部存储提供程序来创建Local PV。`volumeBindingMode`字段设置为`WaitForFirstConsumer`,这表示该存储类只会在第一个Pod请求使用该存储类时创建PV。
2. 创建Local PV
创建Local PV时,需要指定存储类、容量和路径等信息,以下是一个创建名为`local-pv`的Local PV的示例:
```
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /mnt/data
```
在此示例中,`capacity`字段设置为10GB。`accessModes`字段设置为`ReadWriteOnce`,这表示Local PV只能被单个节点上的单个Pod挂载并读写。`persistentVolumeReclaimPolicy`字段设置为`Retain`,这样当该PV被删除时,不会自动删除PV中的数据。`storageClassName`字段设置为`local-storage`,这表示使用前面创建的`local-storage`存储类来创建PV。`local`字段指定了本地文件系统中的路径。
3. 创建使用Local PV的Pod
创建Local PV后,可以创建使用该PV的Pod。以下是一个使用名为`local-pv`的Local PV的Pod的示例:
```
apiVersion: v1
kind: Pod
metadata:
name: local-pv-pod
spec:
containers:
- name: local-pv-container
image: nginx
volumeMounts:
- name: local-pv-volume
mountPath: /usr/share/nginx/html
volumes:
- name: local-pv-volume
persistentVolumeClaim:
claimName: local-pv-claim
```
在此示例中,`volumes`字段指定了使用名为`local-pv-claim`的Persistent Volume Claim(PVC)。PVC是PV的请求,它定义了需要多少存储空间和访问模式。在此示例中,PVC与前面创建的Local PV匹配,并且请求了10GB的存储空间。`volumeMounts`字段指定了将PVC挂载到容器中的路径。
4. 创建Persistent Volume Claim
最后,需要创建一个Persistent Volume Claim来请求Local PV。以下是一个使用名为`local-pv-claim`的PVC的示例:
```
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: local-pv-claim
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
```
在此示例中,`storageClassName`字段设置为`local-storage`,这表示使用前面创建的`local-storage`存储类来请求PV。`accessModes`字段设置为`ReadWriteOnce`,这表示只有单个节点上的单个Pod可以读写此PVC。`resources`字段指定了请求的存储空间大小。