简介
Kubernetes 持久卷(PV)是在 Kubernetes 集群中管理有状态应用程序的关键组件。本教程将指导你了解持久卷,管理其回收策略,并探索 Kubernetes 中的持久卷生命周期管理。
Kubernetes 持久卷(PV)是在 Kubernetes 集群中管理有状态应用程序的关键组件。本教程将指导你了解持久卷,管理其回收策略,并探索 Kubernetes 中的持久卷生命周期管理。
Kubernetes 持久卷(PV)是 Kubernetes 生态系统中的一个关键组件,它提供了一种从底层基础设施抽象存储并使其可供 Pod 使用的方式。持久卷是一种集群级资源,独立于使用它们的 Pod,可以通过多种方式进行供应,例如通过云提供商、网络存储系统或本地磁盘。
持久卷的基本概念是,它代表由管理员供应或使用存储类动态供应的一块存储。然后,Pod 可以通过创建持久卷声明(PVC)来请求存储,持久卷声明是对存储资源的请求。然后,Kubernetes 调度器会将 PVC 与可用的 PV 进行匹配,Pod 就可以使用该存储了。
以下是在 Kubernetes 集群中创建持久卷和持久卷声明的示例:
## 持久卷
apiVersion: v1
kind: 持久卷
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/my-pv
---
## 持久卷声明
apiVersion: v1
kind: 持久卷声明
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
在这个示例中,我们创建了一个容量为 5 GiB 且访问模式为 ReadWriteOnce
的持久卷,这意味着该卷可以由单个节点以读写方式挂载。该持久卷由节点上的主机路径支持。然后,我们创建了一个持久卷声明,请求一个具有相同访问模式的 5 GiB 卷。
当创建一个引用该持久卷声明的 Pod 时,Kubernetes 会自动将持久卷绑定到持久卷声明,然后 Pod 就可以使用该存储了。
Kubernetes 持久卷具有不同的回收策略,这些策略决定了当持久卷声明被删除时底层存储会发生什么。可用的三种回收策略是:
回收策略在持久卷级别设置,可以在持久卷的 spec.persistentVolumeReclaimPolicy
字段中指定。
以下是一个具有 “保留” 回收策略的持久卷示例:
apiVersion: v1
kind: 持久卷
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /data/my-pv
在这个示例中,当使用此持久卷的持久卷声明被删除时,持久卷不会被删除,并且必须手动回收底层存储。
回收策略在各种场景中都可能很重要,例如当你想将底层存储重新用于新的持久卷声明时,或者当你需要确保数据不会被意外删除时。
Kubernetes 中持久卷的生命周期包含几个阶段,包括供应、绑定、使用和回收。了解这些阶段对于在 Kubernetes 集群中有效管理存储资源至关重要。
持久卷可以通过两种方式进行供应:
创建持久卷声明时,Kubernetes 会尝试找到匹配的持久卷。如果找到匹配项,持久卷声明和持久卷将被绑定,并且持久卷声明可供 Pod 使用。
一旦持久卷声明绑定到持久卷,Pod 就可以通过将持久卷声明挂载到 Pod 规范中的卷来使用存储。
当持久卷声明被删除时,持久卷的回收策略决定底层存储会发生什么。如前所述,回收策略可以设置为 “保留”、“删除” 或 “回收”。
通过了解持久卷生命周期,你可以在 Kubernetes 集群中有效管理存储资源,并确保 Pod 拥有所需的存储。
在本教程中,你学习了 Kubernetes 持久卷,包括如何创建和管理它们。你探索了持久卷可用的不同回收策略,例如保留(Retain)、回收(Recycle)和删除(Delete),以及如何根据你的存储需求选择使用每种策略。最后,你了解了持久卷的生命周期以及如何在 Kubernetes 集群中有效地管理存储资源。