本文档介绍了如何为容器应用创建存储卷在特定时间点的副本或快照。借助卷快照,您可以将卷恢复到之前的状态或预配新卷。
本文档适用于应用运营者群组中的开发者,他们负责为其组织创建应用工作负载。如需了解详情,请参阅 GDC 气隙环境文档的受众群体。
准备工作
如需完成本文档中的任务,您必须拥有以下资源和角色:
如需针对 Kubernetes 集群运行命令,请确保您拥有以下资源:
找到 Kubernetes 集群名称,或向平台管理员群组的成员询问集群名称。
登录并生成 Kubernetes 集群的 kubeconfig 文件(如果您还没有)。
使用 Kubernetes 集群的 kubeconfig 路径替换这些说明中的
KUBERNETES_CLUSTER_KUBECONFIG。
如需获得在共享集群中管理卷快照所需的权限,请让您的组织 IAM 管理员向您授予项目命名空间中的 Namespace Admin 角色 (
namespace-admin)。如需获得在标准集群中管理卷快照所需的权限,请让组织 IAM 管理员在标准集群中为您授予 Cluster Developer 角色 (
cluster-developer)。
创建卷快照
如需拍摄 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:卷快照的名称。