网站建设 五金,德州哪个做网站做得好,襄阳网站建设的公司,做网站 除了域名文章目录 PV -- 存储资源提供者PVC -- 存储资源使用者pod绑定PVC StorageClass -- 定义“类型”与提供“策略”。工作原理1. 静态绑定流程2. 动态供应流程 通俗理解pv,pvc,storage1. PV#xff08;PersistentVolume#xff09;- 已存在的存储资源关键字段常见访问模式 2. PVC… 文章目录 PV -- 存储资源提供者PVC -- 存储资源使用者pod绑定PVC StorageClass -- 定义“类型”与提供“策略”。工作原理1. 静态绑定流程2. 动态供应流程 通俗理解pv,pvc,storage1. PVPersistentVolume- 已存在的存储资源关键字段常见访问模式 2. PVCPersistentVolumeClaim- 开发者的存储请求关键字段 3. StorageClass —— 自动建 PV 的“工厂说明书”常见字段 三者之间的关系创建顺序一图看懂 实战示例1. 创建StorageClass以hostPath模拟2. 创建 PV静态方式3. 创建 PVC4. Pod 挂载 PVC 在 KubernetesK8s中
持久化存储Persistent Storage是构建
有状态服务如数据库、缓存等的关键组件。而
PersistentVolumePV 和
PersistentVolumeClaimPVC 是用于管理
持久化存储资源的核心机制。它们是 Kubernetes 中的
存储抽象层
解耦了存储的具体
实现和
使用方式。 功能/组件描述PV存储资源抽象管理员定义的磁盘。PVC用户的资源请求定义容量/访问模式等。StorageClass定义存储的类型、策略实现动态分配。访问模式ReadWriteOnce、ReadOnlyMany、ReadWriteMany回收策略Retain保留、Recycle回收、Delete删除动态供应通过 StorageClass 实现自动创建 PV
PV – 存储资源提供者
PV 是集群管理员提供的一块持久化存储资源是对存储的抽象封装。 类似于硬件层面的“磁盘分区”。由管理员预先配置静态或由系统动态创建。与具体 Pod 解耦生命周期独立于 Pod。
常见类型hostPath、NFS、CephFS、GlusterFS、AWS EBS、GCE PD、CSI 插件 等。
创建pv-nfs.yaml
apiversion: v1
kind: PersistentVolume # 描述资源对象为PV类型
metadata:name: pv0001 # PV 的名字
spec:capacity: # 容量配置storage: 5Gi # pv的容量volumeMode: Filesystem # 存储类型为文件系统accessModes: # 访问模式: ReadwriteOnce(同时只能被一个PVC使用)、ReadwriteMany、ReadOnlyMany- ReadwriteMany # 可被单节点独写persistentvolumeReclaimPolicy: Retain # 回收策略storageClassName: slow # 创建 PV的存储类名需要与pvc的相同mountOptions: # 加载配置- hard- nfsvers4.1nfs: # 连接到nfspath: /data/nfs/rw/test-pv # 存储路径server: 192.168.113.121 # nfs服务地址创建pv资源
kubectl create -f pv-nfs.yaml获取PV资源
kubectl get pvpv状态说明
状态Status含义说明Available可用状态表示 PV 已创建但尚未被任何 PVC 绑定。Bound已绑定状态PV 已与某个 PVC 成功绑定。Released已释放状态绑定的 PVC 已删除但 PV 尚未回收或重新绑定。Failed失败状态表示 PV 发生了错误如回收失败或无法使用。Terminating正在删除状态表示 PV 正在被删除在某些 Kubernetes 版本中可见。
PVC – 存储资源使用者
PVC 是用户对持久存储资源的请求。 就像 Pod 请求 CPU/内存一样请求一个“磁盘资源”。用户通过 PVC 说明期望的容量、访问模式ReadWriteOnce、ReadOnlyMany、ReadWriteMany。系统将 PVC 绑定到满足条件的 PV 上。
创建PVC pvc-test.yaml
apiVersion: v1
kind: PersistentVolumeClaim # 资源类型为 PVC
metadata:name: nfs-pvc
spec:accessModes:- ReadwriteMany # 权限需要与对应的pv相同volumeMode: Filesystemresources:requests:storage: 5Gi # 资源可以小于pv 的但是不能大于如果大于就会匹配不到 pvstorageClassName: slow #名字需要与对应的pv相同
#selector:#使用选择器选择对应的pv
## matchLabels:
## release: stable
## matchExpressions:
## - { key : environment,operator: Invalues: [dev]}
#kubectl create -f pvc-test.yaml获取pvc,pv可以看到pv与pvc的绑定关系
pod绑定PVC
在pod的挂载容器配置中增加pvc挂载
apiversion: v1
kind: Pod
metadata:name: test-pvc-pd
spec:containers:- image: nginxname: nginx-volumevolumeMounts:- mountPath: /usr/share/nginx/html # 挂载到容器的哪个目录name: test-volume # 挂载哪个volumevolumes:- name: test-volumepersistentVolumeClaim: # 关联pveclaimName: nfs-pvc # 要关联到哪个pvcStorageClass – 定义“类型”与提供“策略”。
StorageClass 定义了存储的“类型”与“动态供应策略”。 指定存储的级别、类型SSD/HDD、副本数等参数。实现 PVC 的动态创建 PV。不同云平台和插件支持不同的 StorageClass 类型。
工作原理
1. 静态绑定流程
静态绑定流程 1.管理员创建好 PV。2.用户创建 PVC。3.Kubernetes 根据 PVC 的需求自动匹配一个合适的 PV 并进行绑定。
2. 动态供应流程
动态供应流程 1.用户创建一个带 storageClassName 的 PVC。2.Kubernetes 自动调用该 StorageClass 对应的存储插件动态创建 PV。3.自动绑定 PVC 和新建的 PV。
通俗理解pv,pvc,storage
想象你是一个人开发者你要租一个仓库数据存储来放你的货数据。
K8s 组件类比谁来写PVPersistentVolume仓库管理员创建的“仓库”管理员PVCPersistentVolumeClaim你提交的“租仓库申请”开发者StorageClass仓库的类型和建仓规则自动建仓策略管理员配置 所以流程是这样的 你Pod提出一个仓库申请PVC如果已经有仓库PV满足条件系统自动配对给你如果没有系统可以按规则StorageClass动态建一个仓库动态创建 PV仓库PV一旦租给你PVC你就可以使用它了。 1. PVPersistentVolume- 已存在的存储资源
由管理员手动创建或通过 StorageClass 动态创建。 它定义了能用的存储比如大小、类型NFS、EBS、访问权限等。
kind: PersistentVolume
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncestorageClassName: fast关键字段
字段说明capacity存储容量如 1GiaccessModes访问模式如 ReadWriteOncestorageClassName指定属于哪个 StorageClasshostPath, nfs存储后端类型persistentVolumeReclaimPolicy释放后的回收策略Retain、Delete、Recycle
常见访问模式
模式含义ReadWriteOnce单个节点读写最常用ReadOnlyMany多个节点只读ReadWriteMany多个节点读写如 NFS、CephFS
2. PVCPersistentVolumeClaim- 开发者的存储请求
由开发者或应用创建描述你需要多大的盘、是否可读写等。 系统会查找满足这个 PVC 的 PV 并绑定。
kind: PersistentVolumeClaim
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: fast关键字段
字段说明resources.requests.storage申请的存储大小如 500MiaccessModes访问模式必须与 PV 匹配storageClassName指定使用哪个 StorageClass 的 PV
PVC 会根据配置寻找一个满足条件容量、访问模式、StorageClass的 PV 并绑定。
3. StorageClass —— 自动建 PV 的“工厂说明书”
常见字段
字段含义provisioner指定由哪个插件或 CSI 驱动负责动态创建 PVparameters提供给插件的参数如存储类型、目录、池名等volumeBindingMode等待调度策略常用 WaitForFirstConsumerreclaimPolicy释放后的回收策略Retain/Delete
kind: StorageClass
metadata:name: fast
provisioner: kubernetes.io/aws-ebs
parameters:type: gp2三者之间的关系
概念作用典型由谁创建PV实际的存储资源对象管理员或动态创建PVC用户申请存储的请求开发者 / 应用提交StorageClass定义存储类型模板支持动态供给管理员 创建顺序一图看懂
使用方式顺序描述静态分配1️⃣ PV → 2️⃣ PVC → 3️⃣ Pod管理员先建 PVPVC 请求时自动绑定动态分配1️⃣ StorageClass → 2️⃣ PVC → 3️⃣ PV 自动生成 → 4️⃣ PodPVC 自动触发 PV 创建并绑定
实战示例
1. 创建StorageClass以hostPath模拟
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
2. 创建 PV静态方式
apiVersion: v1
kind: PersistentVolume
metadata:name: my-pv
spec:capacity:storage: 5GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagehostPath:path: /mnt/data
3. 创建 PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: local-storage
4. Pod 挂载 PVC
apiVersion: v1
kind: Pod
metadata:name: pvc-pod
spec:containers:- name: appimage: nginxvolumeMounts:- mountPath: /usr/share/nginx/htmlname: my-storagevolumes:- name: my-storagepersistentVolumeClaim:claimName: my-pvc