本文說明如何為容器應用程式建立特定時間點的儲存磁碟區副本或快照。磁碟區快照可讓您將磁碟區還原至先前的狀態,或佈建新磁碟區。
本文適用於應用程式運算子群組中的開發人員,負責為所屬機構建立應用程式工作負載。詳情請參閱 GDC air-gapped 說明文件適用對象。
事前準備
如要完成本文中的工作,您必須要求必要的權限並準備環境。
要求 IAM 角色
您必須具備特定角色,才能取得建立磁碟區快照所需的權限。您需要的角色取決於您是在機構範圍的共用叢集,還是專案範圍的標準叢集中工作。詳情請參閱「Kubernetes 叢集設定」。
共用叢集角色
如要在共用叢集中建立、刪除、編輯或查看磁碟區快照,請要求專案 IAM 管理員授予您「命名空間管理員」 (namespace-admin) 角色。這個角色會繫結至專案命名空間。
標準叢集角色
如要在標準叢集中建立、刪除、編輯或查看磁碟區快照,請要求專案 IAM 管理員授予您「叢集開發人員」(cluster-developer) 角色。這個角色會繫結至專案命名空間。
準備環境
如要使用 API 對 Kubernetes 叢集執行指令,請確認您具備下列資源:
找出 Kubernetes 叢集名稱,或向平台管理員群組成員詢問叢集名稱。
登入並產生 Kubernetes 叢集的 kubeconfig 檔案。
請使用 Kubernetes 叢集的 kubeconfig 路徑,替換這些操作說明中的
KUBERNETES_CLUSTER_KUBECONFIG。
建立磁碟區快照
如要拍攝 PersistentVolumeClaim 物件的快照,請建立 VolumeSnapshot 物件。系統不保證資料一致性。建立快照前,請先暫停應用程式並清除資料。
建立
VolumeSnapshot自訂資源:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: VOLUME_SNAPSHOT_NAME spec: source: persistentVolumeClaimName: PVC_NAME EOF更改下列內容:
KUBERNETES_CLUSTER_KUBECONFIG:叢集的 kubeconfig 檔案。NAMESPACE:要建立磁碟區快照的命名空間。如果是共用叢集,這必須是專案命名空間。 如果是標準叢集,則可以是任何命名空間。VOLUME_SNAPSHOT_NAME:VolumeSnapshot物件名稱。PVC_NAME:要建立快照的 PVC 名稱。
當
.status.readyToUse欄位變成true時,快照作業即完成。您可以使用下列指令檢查狀態:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \ -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'使用指定為資料來源的磁碟區快照更新 PVC 資訊清單:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: PVC_NAME spec: dataSource: name: VOLUME_SNAPSHOT_NAME kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: standard-rwo accessModes: - ReadWriteOnce resources: requests: storage: 10Gi EOF更改下列內容:
KUBERNETES_CLUSTER_KUBECONFIG:叢集的 kubeconfig 檔案。NAMESPACE:PVC 資源所在的命名空間。如果是共用叢集,這必須是專案命名空間。 如果是標準叢集,則可以是任何命名空間。PVC_NAME:要建立快照的 PVC 名稱。VOLUME_SNAPSHOT_NAME:磁碟區快照的名稱。