通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法
Kubernetes的pod本身是無狀態的(stateless),生命週期通常比較短,只要出現了異常,Kubernetes就會自動建立一個新的Pod來代替它。
而容器產生的資料,會隨著Pod消亡而自動消失。
為了實現Pod內資料的儲存管理,Kubernetes引入了兩個API資源:Persistent Volume(持久卷,以下簡稱PV)和Persistent Volume Claim(持久卷申請,以下簡稱PVC)。
PV是Kubernetes叢集中的一種網路儲存實現,跟Node一樣,也是屬於叢集的資源。
PV跟Docker裡的Volume(卷)類似,不過會有獨立於Pod的生命週期。
使用kubectl get pv檢視列表:
而PVC是使用者的一個請求,跟Pod類似。Pod消費Node的資源,PVC消費PV的資源。
Pod 能夠申請特定的資源(CPU和記憶體);PVC能夠申請特定的尺寸和訪問模式,例如可以載入一個讀寫例項或者多個只讀例項,(就是上圖kubectl get pvc返回結果的Access Mode這一列的值RWO, ROX等等)而無須感知這些例項背後具體的儲存實現。
我們來看一個具體的PVC例項,名稱為nginx-pvc:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-pvc spec: storageClassName: default accessModes: - ReadOnlyMany resources: requests: storage: 1Gi
使用命令kubectl create -f pvc.yaml建立這個yaml檔案定義的persistent volume claim:
然後定義一個pod,消費這個名為nginx-pvc的persistent volume claim:
使用kubectl describe pvc nginx-pvc檢視這個persistent volume claim對應生成的persistent volume:
現在我用命令kubectl cp train.jpg nginx-storage-pod:/usr/share/nginx/html將兩個檔案train.jpg和index.html檔案拷貝到pod內部檔案路徑/usr/share/nginx/html下面:
現在切換到nginx-storage-pod pod裡,在/usr/share/nginx/html目錄下果然發現了這兩個檔案:
接下來我定義了另一個pod,同樣適用nginx-pvc這個PVC:
建立完這個pod之後,then kubectl exec -ti another ash 進入pod內部/usr/share/nginx/html,同樣發現了index.html和train.jpg.
這個例子說明persistent volume claim能夠用於在多個pod間共享持久化資料。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2221872/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過一個實際的例子學習 combineLatest
- 通過一個實際例子理解Kubernetes裡pod的自動scale - 水平自動伸縮
- 幽默:“通過128個簡單的步驟學習Kubernetes!” - iamdevloperdev
- 通過 Route 配置的例子,學習SAP Cloud for Customer 的scoping操作Cloud
- 一個學習 Koa 原始碼的例子原始碼
- 通過一個簡單的例子,瞭解 Cypress 的執行原理
- Kubernetes裡的secret最基本的用法
- 通過describe命令學習Kubernetes的pod屬性詳解
- 一個簡單的netty通訊的例子Netty
- Rust之旅 02.通過例子學習自定義型別Rust型別
- 一個具體的例子學習Java volatile關鍵字Java
- 通過實際的例子,介紹 SAP ABAP 裡的 Repository Information System 的使用技巧ORM
- 通過一個具體的例子,講解 SAP Cloud Platform Integration(CPI) 的使用方法CloudPlatform
- 一個簡單的例子理解Kubernetes的三種IP地址型別型別
- 幽默:“透過128個簡單的步驟學習Kubernetes!” - iamdevloperdev
- 通過階乘的例子,練習在JavaScript, Scala和ABAP裡實現尾遞迴(Tail Recursion)JavaScript遞迴AI
- 通過10個好玩的遊戲來學習 CSS遊戲CSS
- 透過一個具體的例子理解 npm 的 peerDependencyNPM
- [AI開發]一個例子說明機器學習和深度學習的關係AI機器學習深度學習
- Flutter | 通過一個小例子帶你認識動畫 AnimationFlutter動畫
- Mybatis學習筆記 1:一個Mybatis使用例子MyBatis筆記
- 一個簡單例子教會你C++動態庫的用法單例C++
- 通過一個具體的例子,講解 SAP BDC 技術的使用步驟試讀版
- 如何使用Kubernetes的configmap通過環境變數注入到pod裡變數
- Kubernetes stateful set講解以及一個基於postgreSQL的具體例子SQL
- 透過三個例子,學習 Go 語言併發程式設計的利器 - goroutineGo程式設計
- Spring入門學習手冊 5:Spring MVC的一個Hello world!例子SpringMVC
- Angular 原理圖 Schematics 學習 - 動手開發一個實際的例子Angular
- JavaScript 裡三個點 ... 的用法JavaScript
- PHP中ZendCache用法的小例子PHP
- SAP MTA 裡定義 SAP UI5 module 的一個例子UI
- 一個實際的例子學習 SAP BTP Java 應用的 @Before 註解使用方式Java
- Kubernetes pod裡一個特殊的容器:pause-amd64
- C++STL之Vector向量詳解,用法和例子 一起學習 一起加油C++
- 一個複雜的json例子JSON
- 一個簡單的「IOC」例子
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- SAP MM採購定價過程的一個簡單例子單例