iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
DevOps

從認識Docker到精通系列 第 26

第二十六天 - PV & PVC

  • 分享至 

  • xImage
  •  

PV & PVC

圖來自 stackoverflow

在之前的文章中有寫到在宿主機上設置目錄和檔案的方式來儲存資料,但這可能會造成一個問題:配置文件中的 path 必須寫死,即造成了「耦合」的現象發生,為了解耦,K8s 自 1.0 版變發佈了儲存體的抽象資源類型:PV 和 PVC (不是聚氯乙烯)

PV & PVC(Persistent Volume & Persistent Volume Claim)

為了解決 pod 和實體 volume 的耦合,K8s 將儲存直接設定路徑拆分成兩個部分:PV,Persistent Volume,定義物理機上的儲存體設定資訊,以及 PVC,Persistent Volume Claim,定義儲存的需求(如容量等等),兩份設定檔分別由管理員和開發者維護,Container 的部分只需要呼叫需要的 PVC 不需要去思考實體路徑的問題,PVC 便會找到適合的 PV 作為儲存體。

所以PV和PVC到底是啥呢 OwO

  • PV:描述一個具體 volume 的屬性、掛載目錄、遠端儲存體位址等等的文件
  • PVC:描述 pod 需要的持久化屬性,如存儲大小、讀寫權限等等的文件

Example of PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0003
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /tmp
    server: 172.17.0.2

以上為自官方doc的一個範例,除了基本的 apiVersionkind 的部分外,在spec的部分就是PV需要設定的東西

  • capacity:因為 PV 設定檔是實際上會跟硬體層接觸的部分,因此也會需要跟硬體層指定一個大小
  • volumeMode:有兩個選項可選
    • FileSystem (預設):PV 會以檔案系統的形式掛載至容器(pod)中
    • Block:PV 會以 block device 的形式掛載
  • accessModes:讀寫權限的設置,有 ReadWriteOnceReadOnlyOnceReadWriteManyReadWriteOncePod等選項(註)
  • persistentVolumeReclaimPolicy:PV的回收機制,有RetainRecycleDelete三個選項(註)
  • mountOptions:掛載的參數

註:因為儲存體的種類不同,故文件內容可能會因機(?)而異,不同的雲端平台也可能有不同的 attributes

Example of PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 8Gi
  storageClassName: slow
  selector:
    matchLabels:
      release: "stable"
    matchExpressions:
      - {key: environment, operator: In, values: [dev]}

PVC的內容與PV大致相同,以下為PVC特有的部分:

  • resources:請求的資源,在這裡就是指定大小
  • selector:在這裡一樣可以利用selector對label進行篩選,matchLabelsmatchExpression皆可使用

以上就是PV和PVC配置文件的大略,明天將會來介紹PV和PVC的配置原理,以及Storage Class配合的部分

REF

k8s中的PV和PVC理解 - LiZ的博客 (boilingfrog.github.io)
Persistent Volumes | Kubernetes


上一篇
第25天 - Storage In K8s
下一篇
第二十七天 - PV、PVC、StorageClass
系列文
從認識Docker到精通30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言