Kubernetes K8S PersistenVolume和PersistentVolumeClaim

Kubernetes K8S PersistenVolume和PersistentVolumeClaim,kubernetes,storage,Kubernetes,Storage,我正在练习存储主题。我不明白当教程在步骤3中配置PersistenVolumeClaim时,为什么步骤2:PersistentVolume具有不同的存储大小 例如nfs-0001.yaml,nfs-0002.yaml存储s是2Gi和5Gi apiVersion: v1 kind: PersistentVolumemetadata: name: nfs-0001 spec: capacity: storage: 2Gi accessModes: - ReadWriteO

我正在练习存储主题。我不明白当教程在步骤3中配置
PersistenVolumeClaim
时,为什么步骤2:
PersistentVolume
具有不同的存储大小

例如
nfs-0001.yaml,nfs-0002.yaml
<代码>存储s是
2Gi和5Gi

apiVersion: v1
kind: PersistentVolumemetadata:
  name: nfs-0001
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 172.17.0.7
    path: /exports/data-0001
apiVersion: v1
kind: PersistentVolume
metadata:  name: nfs-0002
spec:  
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 172.17.0.7
    path: /exports/data-0002
步骤3中的示例:
pvc-mysql.yaml,pvc-http.yaml

kind: PersistentVolumeClaim
apiVersion: v1metadata:
  name: claim-mysql
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: claim-http
spec:  
  accessModes:
    - ReadWriteOnce  
  resources:
    requests:      
      storage: 1Gi
当我检查pv和pvc时

master $ kubectl get pvc
NAME          STATUS    VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
claim-http    Bound     nfs-0001   2Gi        RWO,RWX                       17m
claim-mysql   Bound     nfs-0002   5Gi        RWO,RWX                       17m
master $ kubectl get pv
NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                 STORAGECLASS   REASON    AGE
nfs-0001   2Gi        RWO,RWX        Recycle          Bound     default/claim-http        19m
nfs-0002   5Gi        RWO,RWX        Recycle          Bound     default/claim-mysql        19m
终端中未显示
1Gi和3Gi

问题:

  • 1Gi和3Gi在哪里?
  • 如果没有使用它们。在
    PersistenVolumeClaim
    yaml中将任意数字放入
    storage
    是否安全

  • 您需要了解PV和PVC之间的区别。PVC是一种存储量声明,在某些情况下可供应用使用,而不是分配的实际体积

    PV是当时在磁盘上分配并准备使用的实际卷。为了使用这些PVs,用户需要创建PersistentVolumeClaims,这只是对PVs的请求。声明必须指定访问模式和存储容量,一旦创建声明,PV将自动绑定到此声明

    在您的情况下,您的PV大小分别为5和3 GB,并且您使用
    accessmode:ReadWriteOnce
    启动了两个分别为3和1 GB的PVC,这意味着一个PVC只能连接一个PV

    现在,可用PV的容量大于要求的容量,因此将较大尺寸的PV分配给PVC

    PVC.spec.capacity
    是用户对存储的请求,“我想要10Gib容量”<代码>PV.规格容量
    是PV的实际尺寸。当没有更小的可用PV时,PVC可以绑定到更大的PV,因此用户可以得到比他想要的更多的PV

    类似地,动态资源调配通常在更大的块中工作。所以,如果用户在PVC中要求0.5GiB,他将得到1Gib PV,因为这是AWS能够提供的最小值

    这没什么错。此外,你不应该把任何随机数在PVC大小,它应该根据你的应用需要和规模计算