k8s基礎概念之六 pv/pvc
阿新 • • 發佈:2021-12-16
pv/pvc概念
pv:儲存卷、pv是叢集中已由管理員配置的一段網路儲存。叢集中的資源就像一個節點是一個叢集的資源,pv是諸如卷之類的卷外掛,但是具有獨立於使用pv的熱河單個pod生命週期。該api物件不會儲存的細節,
大白話:他是叢集裡面的一個磁碟,pod可以掛載使用
pvc:儲存卷請求:是使用者儲存的請求,pvc使用邏輯,在pod中定義一個儲存卷(型別為pvc),定義的時候直接指定大小,pvc必須與對應的pv建立關係,pvc會根據定義的pv去申請。二pv是由儲存空間創建出來的,pv和pvc是kubernetes抽象出來的一種儲存資源
pv沒有名稱空間隔離概念,而pvc有名稱空間隔離概念
模式 | 解釋 |
---|---|
ReadWriteOnce(RWO) | 可讀可寫,但只支援被單個節點掛載 |
ReadOnlyMany(ROX) | 只讀,可被多個節點掛載 |
ReadWriteMany(RWX) |
注:只是起到標識作用,並不會控制他的讀寫
策略 | 解釋 |
---|---|
Retain | 不清除、保留volume(需要手動清除) |
Recycle | 刪除資料,即rm -rf /thevolume/* (只有nfs和hostPath支援) |
Delete |
kind: persistentVolume apiVersion: v1 metadata: name: nfsva spec: nfs: path: /data/nfs/v1 server: 192.168.159.14 accessModes: - "ReadWriteMany" #訪問模式,起到標記作用並不控制讀寫許可權 persistentVolumeReclaimPolicy: Retain #回收策略 capacity: storage: 2Gi #這個儲存卷的大小--- kind: persistentVolume apiVersion: v1 metadata: name: nfsvb spec: nfs: path: /data/nfs/v2 server: 192.168.159.14 accessModes: - "ReadWriteOnce" persistentVolumeReclaimPolicy: Retain capacity: storage: 2Gi #這個儲存卷的大小
#建立pvc kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nfsva spec: accessModes: - "ReadWriteMany" #只是一個標識,並不會控制讀寫許可權,底層儲存該怎麼做他就會怎麼做 resources: requests: storage: 2Gi --- #測試的deployment kind: Deployment apiVersion: apps/v1 metadata: name: nfsvc-test spec: selector: matchLabels: app: nfsva template: metadata: labels: app: nfsva spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx name: nfsva volumes: - name: nfsva persistentVolumeClaim: claimName: nfsva #使用的pvc名字
pvc的空間申請大小大於pv的大小
pvc的storageclassName沒有和pv的一致
pvc的accessModes和pv的不一致
1.pvc沒有建立成功或者被建立 2.pvc和pod不在同一個anmespace
刪除pvc的時候需要先把正在使用pvc的deploy或者pod刪掉或吧使用的pvc刪掉,要不然會一直顯示delete不動
刪除pvc之後k8s會建立一個回收的pod----根據pv的回收策略回收,回收完了之後,pv的狀態就會變成可被繫結的狀態,也就是空閒狀態,其他的pvc匹配到這個pv就會和這個pv繫結