クラスタ ワークロードのバックアップとリストア

このトピックでは、スタンドアローン管理クラスタを使用する TKG の Tanzu Kubernetes Grid (TKG) ワークロード クラスタでホストされているワークロードと動的ストレージ ボリュームをバックアップおよびリストアする方法について説明します。

クラスタ インフラストラクチャ、スタンドアローン管理クラスタ、ワークロード クラスタ オブジェクト自体をバックアップおよびリストアするには、「管理およびワークロード クラスタ インフラストラクチャのバックアップおよびリストア」を参照してください。

スーパーバイザー クラスタ、およびそれらのクラスタが作成したワークロード クラスタを含む vSphere with Tanzu クラスタをバックアップおよびリストアするには、VMware vSphere 8.0 のドキュメントの「vSphere with Tanzu のバックアップとリストア」を参照してください。

Velero の設定

オープン ソース コミュニティ標準ツールである Velero を使用して、TKG スタンドアローン管理クラスタのインフラストラクチャとワークロードをバックアップおよびリストアできます。

Velero は、バックアップを保存するためにさまざまなストレージ プロバイダをサポートしています。Velero は、次の機能もサポートします。

  • バックアップおよびリストア イベントの前後にカスタム プロセスを実行するための、バックアップおよびリストアの事前フックと事後フック。
  • バックアップ/リストアに適していないワークロードまたはクラスタ状態の側面の除外。

Tanzu Kubernetes Grid サブスクリプションには、Tanzu Kubernetes Grid ダウンロード ページから入手可能な、テスト済みの互換性のある Velero ディストリビューションのサポートが含まれています。

TKG クラスタをバックアップおよびリストアするには、以下が必要です。

上記の前提条件を満たしたら、Velero を使用してクラスタ間でワークロードを移行することもできます。手順については、Velero ドキュメントの「Cluster Migration」および「Resource Filtering」を参照してください。

Velero CLI のインストール

注意

以前のバージョンの TKG で配布されている Velero CLI v1.8.1 またはそれ以前をすでにインストールしている場合は、v1.9.7 にアップグレードする必要があります。古いバージョンの Velero は、v1.9 およびそれ以降で使用される CRD では動作しません。

Velero CLI v1.9.7 をインストールするには、次の手順を実行します。

  1. Tanzu Kubernetes Grid のダウンロード ページに移動し、VMware Customer Connect の認証情報を使用してログインします。
  2. Product DownloadsGo to Downloads をクリックします。
  3. Velero エントリまでスクロールし、ワークステーション OS 用の Velero CLI .gz ファイルをダウンロードします。ファイル名は、velero-linux-velero-mac-、または velero-windows64- で始まります。
  4. gunzip コマンドまたは任意の抽出ツールを使用してバイナリを解凍します。

    gzip -d <RELEASE-TARBALL-NAME>.gz
    
  5. プラットフォームの CLI バイナリの名前を velero に変更し、実行可能であることを確認して、PATH に追加します。

    • macOS および Linux プラットフォーム:

      1. バイナリを /usr/local/bin フォルダに移動し、名前を velero に変更します。
      2. ファイルを実行可能にします。
      chmod +x /usr/local/bin/velero
      
    • Windows プラットフォーム:

      1. 新しい Program Files\velero フォルダを作成し、そこにバイナリをコピーします。
      2. バイナリの名前を velero.exe に変更します。
      3. velero フォルダを右クリックして [プロパティ] > [セキュリティ] を選択し、ユーザー アカウントに [フル コントロール] 権限があることを確認します。
      4. Windows 検索を使用して、env を検索します。
      5. [システム環境変数の編集] を選択し、[環境変数] ボタンをクリックします。
      6. [システム環境変数] の下にある Path 行を選択し、[編集] をクリックします。
      7. [新規 (New)] をクリックして新しい行を追加し、velero バイナリへのパスを入力します。

ストレージ プロバイダの設定

Tanzu Kubernetes Grid ワークロード クラスタのコンテンツをバックアップするには、次のもののストレージ場所が必要です。

  • クラスタ内の Kubernetes メタデータ用のクラスタ オブジェクト ストレージ バックアップ
  • クラスタで使用されるデータのボリューム スナップショット

Velero ドキュメントの「Backup Storage Locations and Volume Snapshot Locations」を参照してください。Velero は、次のいずれかのストレージ プロバイダをサポートしています。

  • オンライン クラウド ストレージ プロバイダ。
  • プロキシまたはエアギャップ環境用の、MinIO などのオンプレミス オブジェクト ストレージ サービス。

VMware では、一意のストレージ バケットを各クラスタ専用にすることをお勧めしています。

MinIO を設定するには

  1. MinIO 認証情報とストレージの場所を使用して minio コンテナ イメージを実行します。次に例を示します。

    $ docker run -d --name minio --rm -p 9000:9000 -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio123" -e "MINIO_DEFAULT_BUCKETS=mgmt" gcr.io/velero-gcp/bitnami/minio:2021.6.17-debian-10-r7
    
  2. 認証情報をローカル ファイルに保存して、velero install--secret-file オプションに渡します。次に例を示します。

    [default]
    aws_access_key_id=minio
    aws_secret_access_key=minio123
    

vSphere のストレージ

vSphere では、クラスタ オブジェクト ストレージのバックアップとボリューム スナップショットが同じストレージの場所に保存されます。この場所は、Amazon Web Services (AWS) の S3 互換の外部ストレージ、または MinIO などの S3 プロバイダである必要があります。

vSphere で Velero のストレージを設定するには、v1.4.3 プラグインの「Velero Plugin for vSphere in Vanilla Kubernetes Cluster」を参照してください。

AWS のストレージ

AWS で Velero のストレージを設定するには、Velero Plugins for AWS リポジトリに記載されている手順に従います。

  1. S3 バケットを作成します

  2. Velero の権限を設定します

プラグインごとに必要に応じて S3 ストレージを設定します。オブジェクト ストア プラグインはクラスタ オブジェクトのバックアップを格納および取得し、ボリューム スナップショットツールはデータ ボリュームを保存および取得します。

Azure のストレージ

Azure で Velero のストレージを設定するには、Velero Plugins for Azure リポジトリに記載されている手順に従います。

  1. Azure ストレージ アカウントと BLOB コンテナを作成します。

  2. 仮想マシンとディスクを含むリソース グループを取得します。

  3. Velero の権限を設定します。

プラグインごとに必要に応じて S3 ストレージを設定します。オブジェクト ストア プラグインはクラスタ オブジェクトのバックアップを格納および取得し、ボリューム スナップショットツールはデータ ボリュームを保存および取得します。

ワークロード クラスタへの Velero サーバの展開

Velero サーバをワークロード クラスタに展開するには、velero install コマンドを実行します。このコマンドは、velero という名前の名前空間をクラスタに作成し、velero という名前の展開をそこに配置します。

以前の Velero バージョンからの CRD の更新

クラスタに Velero v1.8.1 またはそれ以前がインストールされている場合は、次の手順を実行して CRD を更新し、Velero v1.9.7 CLI と連携します。

  1. CRD をアップグレードします。

    velero install --crds-only --dry-run -o yaml | kubectl apply -f -
    
  2. Velero イメージの場所を更新します。

    kubectl -n velero set image deployment velero velero=projects.registry.vmware.com/tkg/velero/velero:v1.9.7_vmware.1
    
  3. インストールされているプラグインに応じて、次のコマンドを 1 つ以上実行して、Velero プラグイン イメージの場所を更新します。

    kubectl -n velero set image deployment velero velero-plugin-for-csi=projects.registry.vmware.com/tkg/velero/velero-plugin-for-csi:v0.3.5_vmware.1
    kubectl -n velero set image deployment velero velero-plugin-for-aws=projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_vmware.1
    kubectl -n velero set image deployment velero velero-plugin-for-microsoft-azure=projects.registry.vmware.com/tkg/velero/velero-plugin-for-microsoft-azure:v1.5.5_vmware.1
    kubectl -n velero set image deployment velero velero-plugin-for-vsphere=projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.4.3_vmware.1
    
  4. Restic DaemonSet イメージの場所を更新します。

    kubectl -n velero set image DaemonSet restic restic=projects.registry.vmware.com/tkg/velero/velero:v1.9.7_vmware.1
    

Velero インストール オプション

Velero をインストールするには、次のオプションを指定して velero install を実行します。

  • --provider $PROVIDER:たとえば、aws
  • --plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_vmware.1
  • --bucket $BUCKET:S3 バケットの名前。
  • --backup-location-config region=$REGION:バケットが含まれる AWS リージョン。
  • --snapshot-location-config region=$REGION:バケットが含まれる AWS リージョン。
  • (オプション)--kubeconfig Velero サーバを現在のデフォルト以外のクラスタにインストールします。
  • (オプション)--secret-file ./VELERO-CREDS Velero に S3 バケットへのアクセス権を付与する 1 つの方法は、このオプションに次のようなローカル VELERO-CREDS ファイルを渡すことです。

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    
  • その他のオプションについては、「Install and start Velero」を参照してください。

velero install コマンドを実行すると、velero という名前の名前空間をクラスタに作成し、velero という名前の展開をそこに配置します。

velero install コマンドを実行するなどして、クラスタに Velero を設定する方法は、次のセクションで説明するように、インフラストラクチャとストレージ プロバイダによって異なります。

vSphere 上のクラスタへの Velero のインストール

この手順では、vSphere のスタンドアローン管理クラスタによって管理されるワークロード クラスタに Velero をインストールします。

Tanzu Kubernetes Grid 管理クラスタとして機能する vSphere with Tanzu スーパーバイザー クラスタに Velero を展開するには、「vSphere with Tanzu のバックアップとリストア」を参照してください。

  1. クラスタに TKG v1.6.x またはそれ以前から Velero がすでにインストールされている場合は、「以前の Velero バージョンからの CRD の更新」の手順に従います。

  2. Velero サーバを kubeconfig の現在のデフォルト クラスタにインストールします。これを行うには、velero install を「Velero インストール オプション」で説明されているオプションを指定して実行します。

    • たとえば、オブジェクト ストレージとして MinIO を使用するには、Velero ドキュメントの「MinIO server setup instructions」の手順に従います。

      velero install --provider aws --plugins "projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_vmware.1" --bucket velero --secret-file ./credentials-velero --backup-location-config "region=minio,s3ForcePathStyle=true,s3Url=minio_server_url" --snapshot-location-config region="default"
      
    • 詳細については、Velero Plugin for vSphere v1.4.0 リポジトリの Vanilla Kubernetes クラスタの「Install」セクションを参照してください。

    • Velero サーバをクラスタにインストールすると、velero という名前の名前空間がクラスタに作成され、velero という名前の展開がそのクラスタに配置されます。

  3. --secret-file に前述の velero install で認証情報ファイルを渡さなかった場合は、バックアップ S3 バケットから Velero へのアクセス権の付与を構成します。たとえば、AWS では、IAM ロール nodes.tkg.cloud.vmware.com にポリシーを適用します。このロールは Velero などのホスト型アプリケーションを管理し、S3 バケットへのアクセスを許可します。

  4. Velero Plugin for vSphere を追加すると、Velero は S3 バケットを使用して、クラスタ オブジェクトの格納に加えて、ワークロード データの CSI ボリューム スナップショットを保存できます。

    1. Velero Plugin for vSphere v1.4.3 のイメージをダウンロードします。
    2. CSI ドライバで使用される vSphere 認証情報を取得して、シークレット構成ファイル csi-vsphere.conf にデコードします。

      kubectl -n vmware-system-csi get secret vsphere-config-secret -o jsonpath='{.data.csi-vsphere\.conf}'| base64 -d > csi-vsphere.conf
      
    3. (オプション)シークレット構成ファイル csi-vsphere.conf 内の vCenter Server の IP アドレス、ユーザー名、およびパスワードの値を確認します。これは次のようになります。

      cluster-id = "CLUSTER-ID"
      
      [VirtualCenter "VCENTER-IP"]
      user = "USERNAME"
      password = "PASSWORD"
      port = "443"
      
    4. 構成ファイルを使用して、velero-vsphere-config-secret シークレットを velero 名前空間内に作成します。

      kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf
      
    5. シークレットを参照する Velero プラグインの ConfigMap ファイル velero-plugin.conf を作成します。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: velero-vsphere-plugin-config
      data:
        cluster_flavor: VANILLA
        vsphere_secret_name: velero-vsphere-config-secret
        vsphere_secret_namespace: velero
      
    6. ConfigMap を適用します。

      kubectl -n velero apply -f velero-plugin.conf
      
    7. プラグインを追加します。

      velero plugin add PLUGIN-IMAGE
      

      ここで PLUGIN-IMAGE は、Velero Plugin for vSphere リポジトリ v1.4.3 にリストされているコンテナ イメージへのレジストリ パスです(例:http://projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.4.3_vmware.1)。

    8. Tanzu Kubernetes Grid アカウント用に作成したロールに次の VirtualMachine 権限を追加して、プラグインを有効にします(アカウントの作成時にそれらを含めなかった場合)。

      • [構成 (Configuration)] > [ディスク変更の追跡の切り替え (Toggle disk change tracking)]
      • [プロビジョニング (Provisioning)] > [読み取り専用ディスク アクセスの許可 (Allow read-only disk access)]
      • [プロビジョニング (Provisioning)] > [仮想マシンのダウンロードを許可 (Allow virtual machine download)]
      • [スナップショット管理 (Snapshot management)] > [スナップショットの作成 (Create snapshot)]
      • [スナップショット管理 (Snapshot management)] > [スナップショットの削除 (Remove snapshot)]

AWS 上のクラスタへの Velero のインストール

AWS 上のワークロード クラスタに Velero をインストールするには、Velero Plugins for AWS リポジトリの「Install and start Velero」の手順に従います。

  1. クラスタに TKG v1.6.x またはそれ以前から Velero がすでにインストールされている場合は、「以前の Velero バージョンからの CRD の更新」の手順に従います。

  2. velero install を、「Velero インストール オプション」で説明されているオプションを指定して実行します。

Azure 上のクラスタへの Velero のインストール

Azure 上のワークロード クラスタに Velero をインストールするには、Velero Plugins for Azure リポジトリの「Install and start Velero」の手順に従います。

  1. クラスタに TKG v1.6.x またはそれ以前から Velero がすでにインストールされている場合は、「以前の Velero バージョンからの CRD の更新」の手順に従います。

  2. velero install を、「Velero インストール オプション」で説明されているオプションを指定して実行します。

ワークロードのバックアップとリストア

Velero を使用して、クラスタ全体または特定の名前空間の、ワークロード クラスタの現在のワークロードとパーシステント ボリュームの状態をバックアップおよびリストアします。

ワークロードのバックアップ

ワークロード クラスタのコンテンツをバックアップするには、次の手順を実行します。

  1. インフラストラクチャに応じて「クラスタへの Velero サーバの展開」の説明に従って、ワークロード クラスタに Velero サーバを展開します。必要に応じて、Velero Plugin for vSphere も展開します。

  2. クラスタのコンテンツをバックアップします。

    velero backup create your_backup_name
    
  3. velero backuptransport is closing エラーが返される場合は、Velero ドキュメントの「Update resource requests and limits after install」の説明に従って、メモリ制限を増やしてから再試行してください。

Windows およびマルチ OS ワークロード クラスタのバックアップとリストアはサポートされていません。

ワークロードのリストア

ワークロード クラスタのコンテンツをバックアップからリストアするには、次の手順を実行します。

  1. 新しいクラスタを作成します。クラスタのバックアップを既存のクラスタにリストアすることはできません。

  2. インフラストラクチャに応じて「クラスタへの Velero サーバの展開」の説明に従って、新しいクラスタに Velero サーバを展開します。必要に応じて、Velero Plugin for vSphere も展開します。

  3. クラスタのコンテンツをリストアします。

    velero backup get
    velero restore create your_restore_name --from-backup your_backup_name
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon