K8S 學(xué)習(xí)筆記(一)Volume/PV/PVC

Volume

容器和 Pod 是短暫的。
其含義是它們的生命周期可能很短,會被頻繁地銷毀和創(chuàng)建。容器銷毀時,保存在容器內(nèi)部文件系統(tǒng)中的數(shù)據(jù)都會被清除。
Volume 的生命周期獨立于容器,Pod 中的容器可能被銷毀和重建,但 Volume 會被保留。Volume 與 Pod 的生命周期相同,但與容器的生命周期不相關(guān),當(dāng)容器終止或者重啟時, Volume 中的數(shù)據(jù)不會丟失。

volume的類型

emptyDir
一個 emptyDirVolume 是在 Pod 分配到 Node 時創(chuàng)建的。從它的名稱就可以看出,它的初始 內(nèi)容為空,并且無須指定宿主機上對應(yīng)的目錄文件,因為這是 Kubernetes 自動分配的 一個目錄,
作用:

  • 臨時空間,例如用于某些應(yīng)用程序運行時所需的臨時目錄,且無須永久保留
  • 長時間任務(wù)的中間過程 Check:Point 的臨時保存目錄
  • 一個容器需要從另一個容器中獲取數(shù)據(jù)的目錄(多容器共享目錄〉
image.png

hostPath
hostPath 為在 Pod 上掛載宿主機上的文件或目錄,它通??梢杂糜谝韵聨追矫?。

  • 容器應(yīng)用程序生成的日志文件需要永久保存時,可以使用宿主機的 高速文件系統(tǒng)進行存儲。
  • 需要訪問宿主機上 Docker引擎內(nèi)部數(shù)據(jù)結(jié)構(gòu)的容器應(yīng)用時,可以通過定義 hostPath為 宿主機/var/lib/docker 目錄,使容器內(nèi)部應(yīng)用可以直接訪問 Docker的文件系統(tǒng)。
    如果 Pod 被銷毀了,hostPath 對應(yīng)的目錄也還會被保留,從這點看,hostPath 的持久性比 emptyDir 強。不過一旦 Host 崩潰,hostPath 也就沒法訪問了。

注意

  • 在不同的 Node上具有相同配置的 Pod可能會因為宿主機上的目錄和文件不同而導(dǎo)致對Volume 上目錄和文件的訪問結(jié)果不一致。


    image.png

NFS
使用 NFS 網(wǎng) 絡(luò)文件系統(tǒng)提供的共享目錄存儲數(shù)據(jù)時,我們需要在系統(tǒng)中部署 一 個 NFS Server。 定義 NFS 類型的 Volume 的示例如下

volumes :
- name: nfs
  nfs :
  #改為你的 NFS 服務(wù)器地址
  server: nfs-server.localhost 
  path: "/"

PersistentVolume(PV)

PV 是外部存儲系統(tǒng)中的一塊存儲空間,由管理員創(chuàng)建和維護。PV 具有持久性,生命周期獨立于 Pod。

image.png

關(guān)鍵參數(shù)
存儲能力 Capacity:
描述存儲設(shè)備具備的能力,目前僅支持對存儲空間的設(shè)置( storage=xx )
訪問模式Access Modes:
對 PV 進行訪問模式的設(shè)置,用于描述用戶應(yīng)用對存儲資源的訪問的權(quán)限。訪問模式如下。

  • ReadWriteOnce (簡寫為 RWO ):讀寫權(quán)限,并且只能被單個 Node 掛載
  • ReadOnlyMany (簡寫為ROX):只讀權(quán)限,允許被多個Node掛載。
  • ReadWriteMany (簡寫為 RWX): 讀寫權(quán)限,允許被多個 Node掛載。

回收策略 Reclaim Policy:
目前支持如下三種回收策略。

  • 保留( Retain):保留數(shù)據(jù),需要手工處理 。
  • 回收空間(Recycle):簡單清除文件的操作(例如執(zhí)行 rm-rf/thevolume/*命令)。
  • 刪除(Delete):與PV相連的后端存儲完成 volume的刪除操作(如 AWSEBS、GCEPD、Azure Disk、 OpenStack Cinder 等設(shè)備的內(nèi)部 volume 清理)。

存儲類別Class:
PV 可以設(shè)定其存儲的類別( Class),通過 storageClassName 參數(shù)指定 一個 StorageClass 資源對象名稱。

PersistentVolumeClaim(PVC)

PVC是對 PV 的申請 (Claim)。PVC 通常由普通用戶創(chuàng)建和維護。需要為 Pod 分配存儲資源時,用戶可以創(chuàng)建一個 PVC,指明存儲資源的容量大小和訪問模式(比如只讀)等信息,Kubernetes 會查找并提供滿足條件的 PV。

image.png

PVC 就很簡單了,只需要指定 PV 的容量,訪問模式和 class

在Pod 中使用存儲了,Pod 配置文件 pod1.yml 如下:


image.png

與使用普通 Volume 的格式類似,在 volumes 中通過 persistentVolumeClaim 指定使用 mypvc1 申請的 Volume。

回收
如果不再需要使用 PV,可用刪除 PVC 回收 PV

參考:
《每天5分鐘玩轉(zhuǎn) Docker 容器技術(shù)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容