使用快照
從2001版Astra Trident開始、您可以在Kubernetes層建立PV快照。您可以使用這些快照來維護由Astra Trident所建立之磁碟區的時間點複本、並排程建立其他磁碟區(複本)。支援Volume Snapshot ontap-nas
、 ontap-san
、 ontap-san-economy
、 solidfire-san
、 aws-cvs
、 gcp-cvs`和 `azure-netapp-files
驅動程式:
此功能可從Kubernetes 1.17(試用版)取得、GA版本為1.20。若要瞭解從試用版移轉至GA所涉及的變更、請參閱 "版本部落格"。隨著GA畢業 v1 API版本已推出、並向下相容 v1beta1 快照:
|
-
建立Volume快照需要建立外部快照控制器、以及一些自訂資源定義(CRD)。這是正在使用的Kubernetes Orchestrator的責任(例如:Kubeadm,GKe, OpenShift)。
您可以建立外部快照控制器和快照客戶需求日、如下所示:
-
建立Volume Snapshot客戶需求日:
$ cat snapshot-setup.sh #!/bin/bash # Create volume snapshot CRDs kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
-
在所需的命名空間中建立Snapshot控制器。編輯下方的Yaml清單以修改命名空間。
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
「csi Snapshotter」提供 "正在驗證Webhook" 協助使用者驗證現有的v1Beta1快照、並確認它們是有效的資源物件。驗證Webhook會自動標示無效的快照物件、並防止未來建立無效物件。驗證Webhook是由Kubernetes Orchestrator部署。請參閱指示以手動部署驗證Webhook "請按這裡"。尋找無效快照資訊清單的範例 "請按這裡"。 |
以下範例說明使用快照所需的架構、並說明如何建立及使用快照。
步驟1:設定 VolumeSnapshotClass
在建立Volume Snapshot之前、請先設定連結:../ Trident參考/objects.html[VolumeSnapshotClass
^]。
$ cat snap-sc.yaml #Use apiVersion v1 for Kubernetes 1.20 and above. For Kubernetes 1.17 - 1.19, use apiVersion v1beta1. apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-snapclass driver: csi.trident.netapp.io deletionPolicy: Delete
。 driver
指向Astra Trident的SCSI驅動程式。 deletionPolicy
可以 Delete
或 Retain
。設定為時 Retain
、儲存叢集上的基礎實體快照、即使在 VolumeSnapshot
物件已刪除。
步驟2:建立現有PVc的快照
$ cat snap.yaml #Use apiVersion v1 for Kubernetes 1.20 and above. For Kubernetes 1.17 - 1.19, use apiVersion v1beta1. apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: pvc1-snap spec: volumeSnapshotClassName: csi-snapclass source: persistentVolumeClaimName: pvc1
正在為名為的PVc建立快照 pvc1
,並將快照的名稱設為 pvc1-snap
。
$ kubectl create -f snap.yaml volumesnapshot.snapshot.storage.k8s.io/pvc1-snap created $ kubectl get volumesnapshots NAME AGE pvc1-snap 50s
這會建立一個 VolumeSnapshot
物件:Volume Snapshot類似於PVC、並與相關聯 VolumeSnapshotContent
代表實際快照的物件。
您可以識別 VolumeSnapshotContent
的物件 pvc1-snap
描述Volume Snapshot。
$ kubectl describe volumesnapshots pvc1-snap Name: pvc1-snap Namespace: default . . . Spec: Snapshot Class Name: pvc1-snap Snapshot Content Name: snapcontent-e8d8a0ca-9826-11e9-9807-525400f3f660 Source: API Group: Kind: PersistentVolumeClaim Name: pvc1 Status: Creation Time: 2019-06-26T15:27:29Z Ready To Use: true Restore Size: 3Gi . .
。 Snapshot Content Name
識別提供此快照的Volume SnapshotContent物件。。 Ready To Use
參數表示Snapshot可用於建立新的PVc。
步驟3:從Volume Snapshot建立PVCS
請參閱下列範例、瞭解如何使用快照建立永久虛擬資料:
$ cat pvc-from-snap.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-from-snap spec: accessModes: - ReadWriteOnce storageClassName: golden resources: requests: storage: 3Gi dataSource: name: pvc1-snap kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
dataSource
顯示必須使用名為的Volume Snapshot建立PVc pvc1-snap
做為資料來源。這會指示Astra Trident從快照建立一個永久虛擬資料。建立好永久虛擬基礎架構之後、就能將它附加到Pod上、就像使用任何其他永久虛擬基礎架構一樣使用。
刪除具有相關快照的持續Volume時、對應的Trident Volume會更新為「刪除狀態」。若要刪除Astra Trident磁碟區、則應移除該磁碟區的快照。 |
如需詳細資訊、請參閱
-
連結:../ Trident參考/ objects.html[
VolumeSnapshotClass
^]