??PVC是用户层面,作为对存储资源的需求申请,主要包括了存储空间大小、访问模式、PV的选择条件、存储类别等信息的设置。
apiVersion: v1
kind: PersistentVolumeClaim
metadata: 
  name: test-pvc1
spec: 
  accessModes: 
  - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs-stoarge
  selector:
    matchLabels:
      pv: test-pv1spec.accessModes:访问模式;描述用户应用对存储资源的访问权限。spec.resources.requests.storage:资源请求的存储大小;spec.storageClassName:存储卷模式,指定一个StorageClass资源对象的名称,具有特定类别的PV只能与请求了该类别的PVC进行绑定;(动态存储);当然,也可以设置为spec.storageClassName=“”,未设置特定类型的PV只能与不请求任何类型的PVC进行绑定(静态存储)。spec.selector.matchLabels: PV的选择条件,可以通过标签匹配进行PV绑定;也可以通过spec.selector.matchExpressions进行条件标签描述;$ kubectl get pvc

PVC一共也有4个生命周期阶段:Available/Bound/Released/Failed
Failed:失败状态,自动资源回收失败;
$ kubectl create -f pvc.yaml$ kubectl delete pvc pvc_name$ kubectl get pvc$ kubectl get pvc pvc_name$ kubectl describe pvc pvc_name-n ns_name??我们可以通过标签的方式,将pvc绑定到特定的pv上。需要做两步,一个是pv的yaml标签,另一步是pvc的标签匹配。
举例:
metadata.labels进行标签标记;[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: /date-nfs/k8s
    server: 10.139.12.14spec.selector.matchLabels进行标签匹配。[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
$ kubectl get pv test-pv1
查看pvc
$ kubectl get pvc test-pvc1

我们可以看出test-pvc1持久卷声明绑定到了test-pv1这个持久卷上了。
除了pvc绑定手动创建pv的方式,我们还可以通过动态卷配置StorageClass跳过手动pv的方式。
[root@k8s /sc_test]#  vim test_storageclass1.yaml 
apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
  name: course-nfs-storage
provisioner: fuseim.pri/ifs
spec.storageClassName进行配置。[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
$ kubectl get sc course-nfs-storage
查看SC详情
$ kubectl describe sc course-nfs-storage

$ kubectl  get pvc test-pvc
查看PV
$ kubectl get pv

可以看到一个自动创建的pv,它的策略是Delete,即pvc删除后会自动删除。
Kubernetes-PersistentVolumeClaim(PVC)介绍
原文:https://www.cnblogs.com/Andya/p/12443849.html