溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-07-17 19:12:09 來源:網(wǎng)絡(luò) 閱讀:528 作者:容器魔方 欄目:云計算

目標(biāo)
目前在Kuberentes中,卷插件僅支持配置空的存儲卷。隨著新的存儲功能(包括卷快照和卷克隆)的提出,因此需要支持配置卷時數(shù)據(jù)填充以。例如,可以從快照源創(chuàng)建卷,也可以從其他卷源克隆卷。根據(jù)創(chuàng)建卷的來源,有兩種情況:
1、卷配置程序可以識別數(shù)據(jù)源并能夠直接從數(shù)據(jù)源創(chuàng)建卷(例如,將快照還原到卷或克隆卷)。

2、卷配置程序無法識別數(shù)據(jù)源,并創(chuàng)建空存儲卷。另一個外部組件(數(shù)據(jù)填充程序)可以監(jiān)視卷創(chuàng)建并可以將數(shù)據(jù)填充/導(dǎo)入到已配置的卷。只有在將數(shù)據(jù)填充到卷后,PVC才可以被使用。

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

PVC API 變化
我們將在PVC中添加DataSource字段,以表示預(yù)先填充到預(yù)配置卷的數(shù)據(jù)源。對于DataSource字段,我們定義一個新類型“TypedLocalObjectReference”。它類似于具有附加Kind字段的“LocalObjectReference”類型,以便支持多種數(shù)據(jù)源類型。在alpha版本中,此數(shù)據(jù)源應(yīng)和PVC位于同一命名空間。此數(shù)據(jù)源受限于PVC的同一名稱空間。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
設(shè)計細(xì)節(jié)
在第一個alpha版本中,我們僅支持來自Snapshot的數(shù)據(jù)源。因此,DataSource中的Kind必須是“VolumeSnapshot”。在這種情況下,provisioner 應(yīng)該在一個步驟中完成配置卷并填充數(shù)據(jù)。目前我們還不需要外部數(shù)據(jù)填充程序。
對于需要外部數(shù)據(jù)填充程序的其他類型的數(shù)據(jù)源,卷創(chuàng)建和數(shù)據(jù)填充是兩個單獨(dú)的步驟。 只有在數(shù)據(jù)準(zhǔn)備就緒時,才能將PVC / PV標(biāo)記為就緒(綁定),用戶可以開始使用它們。我們正在制定一個單獨(dú)的提案,使用“Pod Ready ++”(https://github.com/kubernetes/community/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md)中的類似想法來解決這個問題。

注意:為了使用此數(shù)據(jù)源功能,用戶/管理員需要更新到可以識別快照數(shù)據(jù)源的新external provisioner。否則,將忽略數(shù)據(jù)源并創(chuàng)建空存儲卷。

示例
本示例基于kubernetes 1.12版本啟動的local-up環(huán)境,使用csi-hostpath作為測試插件,來演示snapshot的創(chuàng)建以及從snapshot還原數(shù)據(jù)卷。示例所使用的yaml可在https://github.com/wackxu/csi-snapshot-test找到。
步驟一:下載kubernetes 1.12版本,修改hack/local-up-cluster.sh腳本,如下:

第26行修改如下,允許以特權(quán)形式啟動container。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
第131行添加下列,開啟VolumeSnapshotDataSource特性開關(guān)。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
然后我們就可以啟動local-up集群。

步驟二:部署external-provisioner、external-snapshotter、external-attacher、driver-registrar、hostpathplugin等sidecar容器。部署腳本包含serviceaccount、clusterrole等所需要的全部資源。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
查看csi-pod,容器全部處于運(yùn)行狀態(tài)。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
步驟三:創(chuàng)建storageClass,以及pvc,查看pvc以及創(chuàng)建的pv狀態(tài),均已處于bound狀態(tài)。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
步驟四:創(chuàng)建pod,使用pv,同時往pv中寫入數(shù)據(jù)。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
步驟五:創(chuàng)建volumeSnapshotClass,然后對csi-pvc創(chuàng)建snapshot
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
查看創(chuàng)建的volumeSnapshotContent具體信息。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
驗證snapshot是否創(chuàng)建成功。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
步驟六:創(chuàng)建csi-restore-pvc,添加我們此前創(chuàng)建的snapshot為數(shù)據(jù)源。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
查看pvc,pv狀態(tài)
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
查看pv詳細(xì)信息,volumeHandle為93119a08-b754-11e8-97ca-0242ac110003,
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
驗證pv數(shù)據(jù)是否預(yù)填充,我們可以看到創(chuàng)建出來的pv,已有數(shù)據(jù)填充。
K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
相關(guān)服務(wù)請訪問:https://support.huaweicloud.com/cce/index.html?utm_content=cce_helpcenter_2019

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI