创建卷快照

本文档介绍了如何为容器应用创建存储卷在特定时间点的副本或快照。借助卷快照,您可以将卷恢复到之前的状态或预配新卷。

本文档适用于应用运维人员群组中的开发者,他们负责为其组织创建应用工作负载。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

准备工作

如需完成本文档中的任务,您必须请求必要的权限并准备好环境。

申请 IAM 角色

您必须拥有特定角色才能获得创建卷快照所需的权限。您需要的角色取决于您是在组织范围的共享集群中工作,还是在项目范围的标准集群中工作。如需了解详情,请参阅 Kubernetes 集群配置

共享集群角色

如需在共享集群中创建、删除、修改或查看卷快照,请让项目 IAM 管理员向您授予 Namespace Admin (namespace-admin) 角色。此角色与您的项目命名空间绑定。

标准集群角色

如需在标准集群中创建、删除、修改或查看卷快照,请让您的项目 IAM 管理员为您授予 Cluster Developer (cluster-developer) 角色。此角色与您的项目命名空间绑定。

准备环境

如需使用 API 对 Kubernetes 集群运行命令,请确保您拥有以下资源:

  • 找到 Kubernetes 集群名称,或向平台管理员群组的成员询问集群名称。

  • 登录并生成 Kubernetes 集群的 kubeconfig 文件。

  • 使用 Kubernetes 集群的 kubeconfig 路径替换这些说明中的 KUBERNETES_CLUSTER_KUBECONFIG

创建卷快照

如需拍摄 PersistentVolumeClaim 对象的快照,请创建 VolumeSnapshot 对象。系统不保证数据一致性。在拍摄快照之前,暂停应用并刷新数据。

  1. 创建 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_NAMEVolumeSnapshot 对象名称。

    • PVC_NAME:您要为其创建快照的 PVC 的名称。

  2. .status.readyToUse 字段变为 true 时,表示快照操作已完成。您可以使用以下命令检查状态:

      kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \
        -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
    
  3. 使用指定为数据源的卷快照更新 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:卷快照的名称。

后续步骤