Kubernetes-PersistentVolumeClaim(PVC)介绍

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Kubernetes-PersistentVolumeClaim(PVC)介绍

Andya_net   2020-03-08 我要评论
# 1 PVC介绍   PVC是用户层面,作为对存储资源的需求申请,主要包括了存储空间大小、访问模式、PV的选择条件、存储类别等信息的设置。 # 2 PVC的参数详解 ## 2.1 PVC的yaml模板 ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc1 spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: nfs-stoarge selector: matchLabels: pv: test-pv1 ``` ## 2.2 PVC参数说明 1. `spec.accessModes`:访问模式;描述用户应用对存储资源的访问权限。 - RWO:ReadWriteOnce,仅允许单个节点挂载进行读写; - ROX:ReadOnlyMany,允许多个节点挂载且只读; - RWX:ReadWriteMany,允许多个节点挂载进行读写; 2. `spec.resources.requests.storage`:资源请求的存储大小; 3. `spec.storageClassName`:存储卷模式,指定一个StorageClass资源对象的名称,具有特定类别的PV只能与请求了该类别的PVC进行绑定;(动态存储);当然,也可以设置为`spec.storageClassName=“”`,未设置特定类型的PV只能与不请求任何类型的PVC进行绑定(静态存储)。 4. `spec.selector.matchLabels`: PV的选择条件,可以通过标签匹配进行PV绑定;也可以通过`spec.selector.matchExpressions`进行条件标签描述; # 3 PVC的生命周期 `$ kubectl get pvc` ![PVC生命周期](https://img-blog.csdnimg.cn/20200308121200246.png) PVC一共也有4个生命周期阶段:Available/Bound/Released/Failed - Available: 可用状态,无PV绑定; - Bound:绑定状态,已经和某个PV绑定; - Released:释放状态,被绑定的PV已删除,资源释放,但没有被集群回收; - Failed:失败状态,自动资源回收失败; # 4 PVC的常用命令 1. 创建(yaml的方式) `$ kubectl create -f pvc.yaml` 2. 删除 `$ kubectl delete pvc pvc_name` 3. 查看所有PVC `$ kubectl get pvc` 4. 查看某个PVC `$ kubectl get pvc pvc_name` 5. 查看详情 `$ kubectl describe pvc pvc_name` 注意: 若在某个命名空间下,以上命令可以加上`-n ns_name` # 5 PVC和PV的绑定 ## 5.1 手动创建pv进行绑定   我们可以通过标签的方式,将pvc绑定到特定的pv上。需要做两步,一个是pv的yaml标签,另一步是pvc的标签匹配。 **举例**: 1. pv的yaml需要有`metadata.labels`进行标签标记; 如: ```yaml [root@k8s /pv_test]# vim test_pv1.yaml apiVersion: v1 kind: PersistentVolume metadata: name: test-pv1 labels: pv: test-pv1 spec: capacity: storage: 2Mi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: path: https://img.qb5200.com/download-x/date-nfs/k8s server: 10.139.12.14 ``` 2. pvc的yaml里需要有`spec.selector.matchLabels`进行标签匹配。 ```yaml [root@k8s /pvc_test]# vim test_pvc1.yaml #persistent Volume Claim apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc1 namespace: t1 spec: #storageClassName: managed-nfs-storage accessModes: - ReadWriteMany resources: requests: storage: 1Mi selector: matchLabels: pv: test-pv1 ``` - 创建pv和pvc `$ kubectl create -f test_pv.yaml` `$ kubectl create -f test_pvc.yaml` - 查看pv `$ kubectl get pv test-pv1` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308173725524.png) - 查看pvc `$ kubectl get pvc test-pvc1` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308173814115.png) 我们可以看出test-pvc1持久卷声明绑定到了test-pv1这个持久卷上了。 ## 5.2 动态卷配置StorageClass 除了pvc绑定手动创建pv的方式,我们还可以通过动态卷配置StorageClass跳过手动pv的方式。 1. 我们先要创建一个StorageClass资源。 ```yaml [root@k8s /sc_test]# vim test_storageclass1.yaml apiVersion: storage.k8s.io/v1beta1 kind: StorageClass metadata: name: course-nfs-storage provisioner: fuseim.pri/ifs ``` 2. 然后在pvc的yaml中增加`spec.storageClassName`进行配置。 ```yaml [root@k8s /pvc_test]# vim test_pvc_sc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc spec: accessModes: - ReadWriteMany storageClassName: course-nfs-storage resources: requests: storage: 1Mi ``` - 创建StorageClass和PVC资源 `$ kubectl create -f test_storageclass1.yaml ` `$ kubectl create -f test_pv_sc.yaml` - 查看SC `$ kubectl get sc course-nfs-storage` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308175032480.png) - 查看SC详情 `$ kubectl describe sc course-nfs-storage` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308175120309.png) - 查看PVC `$ kubectl get pvc test-pvc` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308175151619.png) - 查看PV `$ kubectl get pv` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308175420982.png) 可以看到一个自动创建的pv,它的策略是Delete,即pvc删除后会自动删除。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们