K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)

​Kubernetes CSI Snapshot(下篇)

目標目前在Kuberentes中,卷插件僅支持配置空的存儲卷。隨着新的存儲功能(包括卷快照和卷克隆)的提出,因此需要支持配置卷時數據填充以。例如,可以從快照源創建卷,也可以從其他卷源克隆卷。根據創建卷的來源,有兩種情況:

1、卷配置程序可以識別數據源並能夠直接從數據源創建卷(例如,將快照還原到卷或克隆卷)。

2、卷配置程序無法識別數據源,並創建空存儲卷。另一個外部組件(數據填充程序)可以監視卷創建並可以將數據填充/導入到已配置的卷。只有在將數據填充到卷後,PVC纔可以被使用。

考慮到可以有許多不同類型的數據源用於將數據填充到卷中,因此我們建議在PersistentVolumeClaimSpec中添加一個通用的“DataSource”字段來表示不同類型的數據源。

PVC API 變化我們將在PVC中添加DataSource字段,以表示預先填充到預配置卷的數據源。對於DataSource字段,我們定義一個新類型“TypedLocalObjectReference”。它類似於具有附加Kind字段的“LocalObjectReference”類型,以便支持多種數據源類型。在alpha版本中,此數據源應和PVC位於同一命名空間。此數據源受限於PVC的同一名稱空間。

1.png

設計細節在第一個alpha版本中,我們僅支持來自Snapshot的數據源。因此,DataSource中的Kind必須是“VolumeSnapshot”。在這種情況下,provisioner 應該在一個步驟中完成配置卷並填充數據。目前我們還不需要外部數據填充程序。

對於需要外部數據填充程序的其他類型的數據源,卷創建和數據填充是兩個單獨的步驟。 只有在數據準備就緒時,才能將PVC / PV標記爲就緒(綁定),用戶可以開始使用它們。我們正在制定一個單獨的提案,使用“Pod Ready ++”(https://github.com/kubernetes/community/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md)中的類似想法來解決這個問題。

注意:爲了使用此數據源功能,用戶/管理員需要更新到可以識別快照數據源的新external provisioner。否則,將忽略數據源並創建空存儲卷。 

示例本示例基於kubernetes 1.12版本啓動的local-up環境,使用csi-hostpath作爲測試插件,來演示snapshot的創建以及從snapshot還原數據卷。示例所使用的yaml可在https://github.com/wackxu/csi-snapshot-test找到。

步驟一:下載kubernetes 1.12版本,修改hack/local-up-cluster.sh腳本,如下:

第26行修改如下,允許以特權形式啓動container。

2.png

第131行添加下列,開啓VolumeSnapshotDataSource特性開關。

3.png

然後我們就可以啓動local-up集羣。

步驟二:部署external-provisioner、external-snapshotter、external-attacher、driver-registrar、hostpathplugin等sidecar容器。部署腳本包含serviceaccount、clusterrole等所需要的全部資源。

4.png

 查看csi-pod,容器全部處於運行狀態。

5.png

步驟三:創建storageClass,以及pvc,查看pvc以及創建的pv狀態,均已處於bound狀態。

6.png

步驟四:創建pod,使用pv,同時往pv中寫入數據。

7.png

步驟五:創建volumeSnapshotClass,然後對csi-pvc創建snapshot

8.png

查看創建的volumeSnapshotContent具體信息。

9.png

驗證snapshot是否創建成功。

10.png

步驟六:創建csi-restore-pvc,添加我們此前創建的snapshot爲數據源。

11.png

查看pvc,pv狀態

12.png

查看pv詳細信息,volumeHandle爲93119a08-b754-11e8-97ca-0242ac110003,

13.png

驗證pv數據是否預填充,我們可以看到創建出來的pv,已有數據填充。

14.png

相關服務請訪問:https://support.huaweicloud.com/cce/index.html?utm_content=cce_helpcenter_2019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章