k8s基礎概念之六 pv/pvc


pv/pvc概念

pv:存儲卷、pv是集群中已由管理員配置的一段網絡存儲。集群中的資源就像一個節點是一個集群的資源,pv是諸如卷之類的卷插件,但是具有獨立於使用pv的熱河單個pod生命周期。該api對象不會存儲的細節,
大白話:他是集群里面的一個磁盤,pod可以掛載使用


pvc:存儲卷請求:是用戶存儲的請求,pvc使用邏輯,在pod中定義一個存儲卷(類型為pvc),定義的時候直接指定大小,pvc必須與對應的pv建立關系,pvc會根據定義的pv去申請。二pv是由存儲空間創建出來的,pv和pvc是kubernetes抽象出來的一種存儲資源

pv沒有命名空間隔離概念,而pvc有命名空間隔離概念

 

pv的訪問模式

模式 解釋
ReadWriteOnce(RWO) 可讀可寫,但只支持被單個節點掛載
ReadOnlyMany(ROX) 只讀,可被多個節點掛載
ReadWriteMany(RWX) 多路可讀可寫,這種存儲可以以讀寫的方式被多個節點共享、不是每一種存儲都支持者三種方式,像共享方式,目前支持的還比較少,比較常用的是NFS,在pvc綁定pv時通常根據兩個條件來判定,是存儲的大小,另一個就是模式

注:只是起到標識作用,並不會控制他的讀寫

 

pv的回收策略

策略 解釋
Retain 不清除、保留volume(需要手動清除)
Recycle 刪除數據,即rm -rf /thevolume/* (只有nfs和hostPath支持)
Delete 刪除儲存資源,比如刪除aws ebs卷(只有aws EBS,GCE PD,Azure Disk和cinder支持)

 

 

創建一個簡單的pv

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   #這個存儲卷的大小

 

寫一個deployment測試

#創建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的空間申請大小大於pv的大小
pvc的storageclassName沒有和pv的一致
pvc的accessModes和pv的不一致

 

創建掛載pvc之后一直處於pending狀態

1.pvc沒有創建成功或者被創建
2.pvc和pod不在同一個anmespace

 

刪除pvc的時候需要先把正在使用pvc的deploy或者pod刪掉或吧使用的pvc刪掉,要不然會一直顯示delete不動

 

刪除pvc之后k8s會創建一個回收的pod----根據pv的回收策略回收,回收完了之后,pv的狀態就會變成可被綁定的狀態,也就是空閑狀態,其他的pvc匹配到這個pv就會和這個pv綁定

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM