中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

發布時間:2020-06-08 07:48:49 來源:網絡 閱讀:525 作者:容器魔方 欄目:云計算

背景

許多存儲系統提供了創建存儲卷“快照”(snapshot)的能力,以防止數據丟失。快照可以替代傳統的備份系統來備份和還原主要數據和關鍵數據。快照能夠快速備份數據(例如,創建GCE PD快照僅需要幾分之一秒), 并提供快速恢復時間目標(RTO)和恢復點目標(RPO)。快照還可用于數據復制、分發和遷移。

早在kubernetes 1.8版本中,卷快照系統原型已經發布,其實現位于external-storage(https://github.com/kubernetes-incubator/external-storage)庫中。該原型基于CRD實現,提供了外部controller和provisioner兩個二進制,支持GCE PD,AWS EBS,OpenStack Cinder,GlusterFS和Kubernetes hostPath等存儲卷。

Kubernetes的社區存儲趨勢是采用CSI實現存儲插件,本文添加對CSI存儲插件的快照支持。Kubernetes的趨勢是保持核心API盡可能小,因此我們采用CRD實現,并添加一個外部快照控制器來處理卷快照,external provisioner也會升級以支持從快照創建volume,CSI snapshot規范詳情可以在https://github.com/container-storage-interface/spec/pull/224查看。

目標

對于Kubernetes中的第一個快照支持版本,我們僅支持CSI卷插件按需創建快照。

目標1:實現標準化的快照操作,支持創建,列出和刪除快照等REST API。目前,API將使用CRD(CustomResourceDefinitions)實現。

目標2:實現CSI卷快照支持。external-snapshotter將與CSI卷插件的其他外部組件(例如,external-attacher, external-provisioner)一起部署。

目標3:提供一種從快照創建新存儲卷和還原現有卷的便捷方法。

以下目標本階段將不會實現,但將在稍后階段考慮。

目標4:通過提供pre/post快照鉤子來凍結/解凍應用程序和/或卸載/掛載文件系統,從而提供應用程序一致性快照。

目標5:提供更高級別的管理,例如備份和還原pod和statefulSet,以及創建一致性的快照組。

詳細設計

在此提案中,卷快照被視為Kubernetes管理的另一種存儲資源。 因此,快照API和控制器遵循現有卷管理的設計模式。

VolumeSnapshot

VolumeSnapshotContent

VolumeSnapshotClass

三個API,它們與PersistentVolumeClaim和PersistentVolume以及storageClass的結構類似。外部快照控制器的功能類似于in-tree的PV控制器。同時建議在PersistentVolumeClaim(PVC)API中添加新的數據源結構,以支持從快照還原數據卷。 以下部分將詳細介紹API和控制器設計。

Snapshot API設計

VolumeSnapshot和VolumeSnapshotContent API是在PersistentVolumeClaim和PersistentVolume之后建模設計的。 在第一個版本中,VolumeSnapshot生命周期完全獨立于其來源(PVC)。 刪除PVC / PV時,相應的VolumeSnapshot和VolumeSnapshotContent對象將繼續存在。 但是,對于某些卷插件,快照依賴于其存儲卷。 在未來的版本中,我們計劃進行完整的生命周期管理,以便更好地處理快照與其卷之間的關系。(例如,添加finalizer,當有快照依賴于存儲卷時,可防止存儲卷被刪除)。

VolumeSnapshot對象

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

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

VolumeSnapshotContent對象

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

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

VolumeSnapshotClass對象

我們將添加新的API對象VolumeSnapshotClass,而不是復用現有的StorageClass,以避免在snapshot和volume之間混合參數。每個CSI卷插件都可以擁有自己的默認VolumeSnapshotClass。如果未提供VolumeSnapshotClass,則將使用默認值。VolumeSnapshotClass將為快照添加新的參數。

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

Snapshot Controller 設計要點

如下圖所示,CSI快照控制器體系結構由external-snapshotter(外部快照器)組成,external-snapshotter通過套接字與out-of-tree CSI卷插件進行通信(默認情況下為/ run / csi / socket,可由-csi-address配置)。external-snapshotter是Kubernetes實現容器存儲接口(CSI)的一部分。 它是一個外部控制器,用于監視VolumeSnapshot和VolumeSnapshotContent對象并創建/刪除快照。

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

通常external-snapshotter使用ControllerGetCapabilities來驗證CSI驅動程序是否支持CREATE_DELETE_SNAPSHOT調用。

external-snapshotter負責創建/刪除快照及綁定VolumeSnapshot和VolumeSnapshotContent對象。它遵循kubernetes控制器模式并使用informer來監視VolumeSnapshot和VolumeSnapshotContent創建/更新/刪除事件。通過Snapshotter == <CSI卷插件名字>過濾掉不符合的VolumeSnapshot實例,并使用具有指數退避的工作隊列處理這些事件。

對于動態創建的快照,它應該關聯某個VolumeSnapshotClass。用戶可以在VolumeSnapshot API對象中顯式指定VolumeSnapshotClass。如果用戶未指定VolumeSnapshotClass,則將使用admin創建的默認VolumeSnapshotClass。這和使用默認的StorageClass來配置PersistentVolumeClaim相似。

對于靜態綁定快照,user/admin必須為VolumeSnapshot和VolumeSnapshotContent正確指定雙向指針,以便控制器知道如何綁定它們。否則,如果VolumeSnapshot指向不存在的VolumeSnapshotContent,或者是VolumeSnapshotContent并未指向VolumeSnapshot,則將VolumeSnapshot設置為錯誤狀態。

針對每一個CSI卷插件,external-snapshotter、external-attacher和external-provisioner運行在同一個sidecar中。

在當前設計中,當存儲系統無法創建快照時,將不會在控制器中執行重試。這是因為當快照創建的時間很重要時,用戶可能不想在獲取一致性快照或計劃快照時重試。在將來的版本中,將添加maxRetries標志或重試終止時間戳,以允許用戶控制是否需要重試。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

漠河县| 新乡县| 襄樊市| 宁德市| 漳州市| 专栏| 天水市| 宜良县| 社旗县| 阿图什市| 恩平市| 阿克苏市| 万年县| 佛坪县| 周至县| 久治县| 丹东市| 宿松县| 安义县| 叙永县| 中卫市| 板桥市| 甘德县| 渭源县| 孝义市| 哈巴河县| 吉木乃县| 海淀区| 泸水县| 兴宁市| 昌图县| 鄯善县| 当涂县| 石河子市| 大邑县| 德州市| 武乡县| 岑溪市| 兖州市| 苗栗市| 万载县|