細述Kubernetes中的StorageClass和動態卷供給
儲存是容器執行環境的重要一環,Kubernetes 提供了一些用於儲存管理的基礎能力。動態卷供給是一個 Kubernetes 獨有的功能,這一功能允許按需建立儲存卷。在沒有這種能力之前,叢集管理員需要打電話給他們的雲或者儲存提供者來建立新的儲存卷,成功以後再建立 PersistentVolume物件,才能夠在 Kubernetes 中使用。動態卷供給能力讓管理員不必進行預先建立儲存卷,而是隨使用者需求進行建立。 |
Alpha 版本的動態卷,一個叢集同時只能允許單獨的、被硬編碼的提供者。也就是說,如果 Kubernetes 要提供動態卷的時候,即使叢集中可以使用多個儲存系統,Kubernetes 也只會使用同一個儲存卷外掛。儲存提供者的選型是基於雲環境型別決定的 —— AWS 的 EBS,Google Cloud 的 Persistent Disk 或者是 OpenStack 的 Cinder,以及 vSphere 的 vSphere Volume。另外只有容量引數可以配置。這就意味著,即使有其他引數可用,所有的動態卷除了尺寸大小,其他都是一樣的。
雖說這一功能的 Alpha 版本實用性有限,這畢竟是邁出了一步,有助於確定今後的發展方向。
Kubernetes 1.4 中加入了一個 新的 API 物件 StorageClass,可以定義多個 StorageClass 物件,並可以分別指定儲存外掛、設定引數,用於提供不同的儲存卷。這樣的設計讓叢集管理員能夠在同一個叢集內,定義和提供不同型別的、不同引數的卷(相同或者不同的儲存系統)。這樣的設計還確保了終端使用者在無需瞭解太多的情況下,有能力選擇不同的儲存選項。
叢集管理員定義併發布了兩個 StorageClass 物件
kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: slow provisioner: kubernetes.io/gce-pd parameters: type: pd-standard
這一段建立了一個名為 “slow” 的 StorageClass,用於提供標準的持久儲存。
kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: fast provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd
這一段建立了一個名為 “fast” 的 StorageClass,用於提供類似 SSD 的持久儲存。
使用者在 PersistentVolumeClaim 中可以包含一個 StorageClass 申請動態提供儲存。這一任務需要使用 volume.beta.kubernetes.io/storage-class 註解來完成。這一註解的值必須符合管理員配置的 StorageClass 名稱。
要選擇 “fast” 儲存類,使用者需要建立如下的 PVC:
{ "kind": "PersistentVolumeClaim", "apiVersion": "v1", "metadata": { "name": "claim1", "annotations": { "volume.beta.kubernetes.io/storage-class": "fast" } }, "spec": { "accessModes": [ "ReadWriteOnce" ], "resources": { "requests": { "storage": "30Gi" } } } }
上述報文會提供一個等效於 SSD 的持久盤,當這個 PVC 被刪除,這個卷也隨之銷燬。
所有的 PVC 都可以在不使用 StorageClass 註解的情況下,直接使用某個動態儲存。把一個StorageClass 物件標記為 “default” 就可以了。StorageClass 用註解storageclass.beta.kubernetes.io/is-default-class 就可以成為預設儲存。
有了預設的 StorageClass,使用者建立 PVC 就不用 storage-class 的註解了,1.4 中新加入的DefaultStorageClass 准入控制器會自動把這個標註指向預設儲存類。
Kubernetes 1.4 相容 alpha 版本的動態卷特性,讓使用者能夠平滑過渡到 beta 版本。用volume.alpha.kubernetes.io/storage-class 註解來標註 alpha 版本。
如果 Kubernetes 叢集部署在雲服務商,我們 考慮 自動使用雲的本地儲存系統建立一個動態卷供給者。例如在 AWS 上的標準部署會得到一個 EBS 的動態卷供給,而 Google Cloud 的部署則會提供一個 GCE PD 動態卷供應者。我們還在討論是否應該把這種卷作為預設卷。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2642737/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes資料持久化StorageClass動態供給(二)持久化
- 基於NFS的PV動態供給(StorageClass)NFS
- 細述Kubernetes和Docker容器的儲存方式Docker
- 簡述Linux下的靜態庫和動態庫Linux
- Kubernetes 持久化資料儲存 StorageClass持久化
- 構建“資料要素×”的保障中臺和安全供給
- 細述kubernetes HA安裝方式- sealos詳解
- Kubernetes 跨 StorageClass 遷移 Persistent Volumes 完全指南
- Java中的靜態代理和動態代理Java
- 監控供應鏈動態、競爭格局和策略
- listener的靜態註冊與動態註冊詳述
- kubernetes中將hostpath卷安裝到POD
- Python中動態類和動態方法的建立與呼叫Python
- Kubernetes跨StorageClass遷移,切換Rainbond預設SCAI
- 在vue中給奇數行動態新增classVue
- C# 4.0中的動態型別和動態程式設計C#型別程式設計
- 細述docker容器中建立SSH服務映象Docker
- Django:動態問卷系統的Model設計Django
- 細數動態IP的特點
- 詳細講述Oracle RAC入門和提高Oracle
- iOS中的動態庫,靜態庫和framework介紹iOSFramework
- 以下關於CISC和RISC的敘述中,錯誤的是()【最全!最詳細總結!】
- Kubernetes架構簡述架構
- LVM基礎詳細說明及動態擴容lvm邏輯卷的操作記錄LVM
- 簡述動態IPvps以及連線其的方法
- 使用NAS動態儲存卷建立有狀態應用
- 最詳細的代理講解--JDK動態代理和cglib代理JDKCGLib
- kubernetes跑jenkins動態slaveJenkins
- vue:動態給img賦值Vue賦值
- jquery 動態給table賦值jQuery賦值
- ChatGPT:細探商業模式與供給端決定因素(附下載)ChatGPT模式
- Airbnb的動態 Kubernetes 叢集擴縮容AI
- 在Linux中建立靜態庫和動態庫Linux
- SQLServer中動態查詢sql返回值給變數<整理>SQLServer變數
- Android開發之動態設定字型的樣式和粗細Android
- 細說JDK動態代理的實現原理JDK
- 資源供給:併發性控制和mutex之一Mutex
- 資源供給:併發性控制和mutex之二Mutex