久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Kubernetes卷的快照

2023-11-01 156

提示:學習本篇教程前請先參閱《Kubernetes持久卷》。

一、卷快照介紹

PersistentVolume 和 PersistentVolumeClaim 這兩個 API 資源用于給用戶和管理員制備卷,而 VolumeSnapshotContent 和 VolumeSnapshot 這兩個 API 資源則用于創(chuàng)建卷快照。

VolumeSnapshotContent 是從一個卷獲取的一種快照,由管理員在集群中進行制備。類似于 PersistentVolume 是集群的資源,VolumeSnapshotContent 也是集群中的資源,可供集群內的其他用戶或應用程序使用。

VolumeSnapshot 則是用戶對卷進行快照的請求,并類似于 PersistentVolumeClaim。用戶可以通過創(chuàng)建 VolumeSnapshot 來保存卷的狀態(tài),以便在需要時恢復該狀態(tài)。與 PersistentVolumeClaim 類似,用戶可以指定 VolumeSnapshot 的屬性,如訪問模式、存儲容量等等。

VolumeSnapshotClass 允許指定屬于 VolumeSnapshot 的不同屬性。在從存儲系統(tǒng)的相同卷上獲取的快照之間,這些屬性可能有所不同,因此不能通過使用與 PersistentVolumeClaim 相同的 StorageClass 來表示。

卷快照能力為 Kubernetes 用戶提供了一種標準的方式,在指定的時間點復制卷的內容,而無需創(chuàng)建全新的卷。這一功能對于數據庫管理員來說尤其有用,他們可以在執(zhí)行編輯或刪除等修改之前對數據庫進行備份。

在使用卷快照時,需要注意以下幾點:

1、API對象 VolumeSnapshot、VolumeSnapshotContent和VolumeSnapshotClass是自定義資源定義(CRD),它們并不屬于核心API。

2、卷快照功能僅適用于CSI(容器存儲接口)驅動程序。

3、為了支持卷快照,在Kubernetes中,團隊提供了一個快照控制器(snapshot controller),它是部署在控制平面的一個組件。同時還提供了一個名為csi-snapshotter的邊車(Sidecar)輔助容器,該輔助容器與CSI驅動程序一起部署??煺湛刂破髫撠煴O(jiān)視VolumeSnapshot和VolumeSnapshotContent對象,并負責創(chuàng)建和刪除VolumeSnapshotContent對象。而csi-snapshotter輔助容器則負責監(jiān)視VolumeSnapshotContent對象,并觸發(fā)針對CSI端點的CreateSnapshot和DeleteSnapshot操作。

4、還有一個用于驗證的Webhook服務器,可以對快照對象進行更嚴格的驗證。Kubernetes發(fā)行版應該將此服務器與快照控制器和自定義資源定義(CRD)一起安裝。此服務器應該在所有啟用了快照功能的Kubernetes集群中進行安裝。

5、CSI驅動程序可能會實現卷快照功能,也可能沒有實現。在實現了卷快照功能的情況下,CSI驅動程序可能會使用csi-snapshotter來提供對卷快照的支持。

6、Kubernetes 負責 CRD 和快照控制器的安裝。

二、卷快照/內容生命周期

卷快照(VolumeSnapshotContents)是Kubernetes集群中的資源,而卷快照內容(VolumeSnapshots)則是對這些資源的請求。

卷快照和卷快照內容的生命周期如下:

1、制備卷快照:可以通過預制備或動態(tài)制備兩種方式進行。預制備是由集群管理員創(chuàng)建多個VolumeSnapshotContents,它們包含實際卷快照在存儲系統(tǒng)中的詳細信息,并可以供集群用戶使用。這些預制備的快照存在于Kubernetes API中,并可立即使用。動態(tài)制備則是從PersistentVolumeClaim(持久化卷聲明)中動態(tài)獲取快照,而不需要使用現有的快照。在動態(tài)制備時,可以指定特定于存儲提供程序的參數。

2、綁定:在預制備和動態(tài)制備的場景下,快照控制器會處理將VolumeSnapshot對象和適當的VolumeSnapshotContent對象進行綁定。綁定關系是一對一的。在預制備快照的場景中,VolumeSnapshotContent對象被創(chuàng)建后才與VolumeSnapshot進行綁定。

3、快照源的持久性卷聲明保護:這種保護的目的是確保在從系統(tǒng)中獲取快照時,不會刪除正在使用的PersistentVolumeClaim對象(因為這可能導致數據丟失)。當為某個PersistentVolumeClaim生成快照時,該PersistentVolumeClaim處于被使用狀態(tài)。如果刪除正在作為快照源使用的PersistentVolumeClaim對象,該對象不會立即被移除,而是推遲刪除操作,直到快照狀態(tài)變?yōu)镽eadyToUse或快照操作被中止。

4、刪除:當刪除VolumeSnapshot對象時,將觸發(fā)刪除相應的VolumeSnapshotContent操作,并且會根據DeletionPolicy執(zhí)行相應的操作。如果DeletionPolicy設置為Delete,底層存儲快照將與VolumeSnapshotContent一起被刪除。如果DeletionPolicy設置為Retain,底層快照和VolumeSnapshotContent都將保留。

三、卷快照使用

每個 VolumeSnapshot 包含一個 spec 和一個 status:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: new-snapshot-test
spec:
volumeSnapshotClassName: csi-hostpath-snapclass
source:
persistentVolumeClaimName: pvc-test

persistentVolumeClaimName是指向PersistentVolumeClaim數據源的名稱,用于在動態(tài)制備快照時標識數據來源。這個字段是動態(tài)制備快照中的必填字段。可以通過指定volumeSnapshotClassName屬性來請求特定類的卷快照,該屬性指定了VolumeSnapshotClass的名稱。如果未設置volumeSnapshotClassName,則將使用默認的VolumeSnapshotClass(如果有定義的話)來創(chuàng)建快照。

如下面例子所示,對于預制備的快照,需要給快照指定 volumeSnapshotContentName 作為來源;對于預制備的快照 source 中的volumeSnapshotContentName 字段是必填的。

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: test-snapshot
spec:
source:
volumeSnapshotContentName: test-content

四、卷快照內容

每個 VolumeSnapshotContent 對象包含 spec 和 status。 在動態(tài)制備時,快照通用控制器創(chuàng)建 VolumeSnapshotContent 對象。下面是例子:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
metadata:
name: snapcontent-72d9a349-aacd-42d2-a240-d775650d2455
spec:
deletionPolicy: Delete
driver: hostpath.csi.k8s.io
source:
volumeHandle: ee0cfb94-f8d4-11e9-b2d8-0242ac110002
sourceVolumeMode: Filesystem
volumeSnapshotClassName: csi-hostpath-snapclass
volumeSnapshotRef:
name: new-snapshot-test
namespace: default
uid: 72d9a349-aacd-42d2-a240-d775650d2455

volumeHandle 是存儲后端創(chuàng)建卷的唯一標識符,在卷創(chuàng)建期間由 CSI 驅動程序返回。 動態(tài)設置快照需要此字段,它指出了快照的卷源。

對于預制備快照,作為集群管理員要按如下命令來創(chuàng)建 VolumeSnapshotContent 對象:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
metadata:
name: new-snapshot-content-test
spec:
deletionPolicy: Delete
driver: hostpath.csi.k8s.io
source:
snapshotHandle: 7bdd0de3-aaeb-11e8-9aae-0242ac110002
sourceVolumeMode: Filesystem
volumeSnapshotRef:
name: new-snapshot-test
namespace: default
  • snapshotHandle 是存儲后端創(chuàng)建卷的唯一標識符。對于預制備的快照,這個字段是必需的,它指定此 VolumeSnapshotContent 表示的存儲系統(tǒng)上的 CSI 快照 ID。
  • sourceVolumeMode 是創(chuàng)建快照的卷的模式,它可以是 Filesystem 或 Block,如果沒有指定源卷模式,Kubernetes 會將快照視為未知的源卷模式。
  • volumeSnapshotRef 字段是對相應的 VolumeSnapshot 的引用,注意當 VolumeSnapshotContent 被創(chuàng)建為預配置快照時,volumeSnapshotRef 中引用的 VolumeSnapshot 可能還不存在。

五、轉換快照的卷模式

如果在集群上安裝的 VolumeSnapshots API 支持 sourceVolumeMode 字段,則該 API 可以防止未經授權的用戶轉換卷的模式。

要檢查集群是否具有此特性的能力,可以運行如下命令:

kubectl get crd volumesnapshotcontent -o yaml

如果希望允許用戶從現有的 VolumeSnapshot 創(chuàng)建 PersistentVolumeClaim, 但是使用與源卷不同的卷模式,則需要添加注解 snapshot.storage.kubernetes.io/allow-volume-mode-change: “true” 到對應 VolumeSnapshot 的 VolumeSnapshotContent 中。

對于預制備的快照,spec.sourceVolumeMode 需要由集群管理員填充。

啟用此特性的 VolumeSnapshotContent 資源示例如下所示:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
metadata:
name: new-snapshot-content-test
annotations:
- snapshot.storage.kubernetes.io/allow-volume-mode-change: "true"
spec:
deletionPolicy: Delete
driver: hostpath.csi.k8s.io
source:
snapshotHandle: 7bdd0de3-aaeb-11e8-9aae-0242ac110002
sourceVolumeMode: Filesystem
volumeSnapshotRef:
name: new-snapshot-test
namespace: default
  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內容未經允許不得轉裁,轉載請注明出處“站長百科”和原文地址。