ボリューム スナップショットを作成する

このドキュメントでは、コンテナ アプリケーションの特定の時点でのストレージ ボリュームのコピー(スナップショット)を作成する方法について説明します。ボリューム スナップショットを使用すると、ボリュームを以前の状態に戻したり、新しいボリュームをプロビジョニングしたりできます。

このドキュメントは、組織のアプリケーション ワークロードの作成を担当するアプリケーション オペレーター グループのデベロッパーを対象としています。詳細については、GDC エアギャップ環境のユーザー向けドキュメントをご覧ください。

始める前に

このドキュメントのタスクを完了するには、次のリソースとロールが必要です。

  • Kubernetes クラスタに対してコマンドを実行するには、次のリソースがあることを確認してください。

    • Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。

    • まだ Kubernetes クラスタの kubeconfig ファイルがない場合は、ログインして生成します。

    • Kubernetes クラスタの kubeconfig パスを使用して、これらの手順の KUBERNETES_CLUSTER_KUBECONFIG を置き換えます。

  • 共有クラスタでボリューム スナップショットを管理するために必要な権限を取得するには、組織の IAM 管理者に、プロジェクトの Namespace で Namespace 管理者ロール(namespace-admin)を付与するよう依頼してください。

  • 標準クラスタでボリューム スナップショットを管理するために必要な権限を取得するには、標準クラスタでクラスタ デベロッパー ロール(cluster-developer)を付与するよう組織の IAM 管理者に依頼してください。

ボリューム スナップショットを作成する

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: ボリューム スナップショットを作成する Namespace。共有クラスタの場合、これはプロジェクト Namespace である必要があります。Standard クラスタの場合は、任意の Namespace を指定できます。

    • VOLUME_SNAPSHOT_NAME: VolumeSnapshot オブジェクト名。

    • 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 リソースが存在する Namespace。共有クラスタの場合、これはプロジェクト Namespace である必要があります。Standard クラスタの場合は、任意の Namespace を指定できます。

    • PVC_NAME: スナップショットを作成する PVC の名前。

    • VOLUME_SNAPSHOT_NAME: ボリューム スナップショットの名前。

次のステップ