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

このトピックでは、スタンドアローン管理クラスタを使用する 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 をすでにインストールしている場合は、Velero を v1.11.1 にアップグレードする必要があります。詳細については、以下の「Velero のアップグレード」を参照してください。

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

  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 バイナリへのパスを入力します。

Velero のアップグレード

TKG を v2.3 から v2.4 にアップグレードした場合は、Velero を v1.11.1 にアップグレードする必要があります。

重要

Velero v1.10.x では、異なる CRD、異なるコンポーネントの命名、および機能が v1.9.x とは異なる方法で使用されます。TKG 2.3 で Velero v1.9.x を使用していて、TKG 2.4 にアップグレードしている場合は、v1.11.1 にアップグレードする前に Velero を v1.9.x から v1.10.x にアップグレードする必要があります。Velero を v1.9.x から v1.10.x にアップグレードする手順については、Velero を v1.11.1 にアップグレードする前に TKG 2.3 ドキュメントの「Velero をアップグレードする」の手順に従ってください。

Velero を v1.10.x から v1.11.1 にアップグレードするには、次の手順を実行します。

  1. Velero CLI のインストール」の手順に従って、Velero v1.11.1 をインストールします。
  2. Velero v1.11.1 バイナリを使用して CRD 定義を更新します。

    velero install --crds-only --dry-run -o yaml | kubectl apply -f -
    
  3. Velero デプロイ構成を更新して、新しいバージョンの Velero と、インフラストラクチャ用の Velero プラグインのバージョンを使用します。

    vSphere
    kubectl set image deployment/velero \
        velero=velero/velero:v1.11.1 \
        velero-plugin-for-vsphere=velero/velero-plugin-for-vsphere:v1.5.1 \
        --namespace velero
    
    AWS
    kubectl set image deployment/velero \
        velero=velero/velero:v1.11.1 \
        velero-plugin-for-aws=velero/velero-plugin-for-aws:v1.7.1 \
        --namespace velero
    
    Azure
    kubectl set image deployment/velero \
        velero=velero/velero:v1.11.1 \
        velero-plugin-for-microsoft-azure=velero/velero-plugin-for-microsoft-azure:v1.7.1 \
        --namespace velero
    
  4. (オプション)node デーモン セットを使用している場合は、ノード エージェントのバージョンを更新します。

    kubectl set image daemonset/node-agent \
       node-agent=velero/velero:v1.11.1 \
       --namespace velero 
    

詳細については、Velero ドキュメントの「Velero 1.11 へのアップグレード」を参照してください。

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

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.5.1 プラグインの「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 がすでにインストールされている場合は、「Velero のアップグレード」の手順に従います。

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

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

  • --provider $PROVIDER:たとえば、aws
  • --plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.7.1_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. 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.7.1_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.5.1 リポジトリの Vanilla Kubernetes クラスタの「Install」セクションを参照してください。

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

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

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

    1. Velero Plugin for vSphere v1.5.1 のイメージをダウンロードします。
    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.5.1 にリストされているコンテナ イメージへのレジストリ パスです(例:http://projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.5.1_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 のインストール

  1. AWS 上のワークロード クラスタに Velero をインストールするには、Velero Plugins for AWS リポジトリの「Install and start Velero」の手順に従います。
  2. velero install を、「Velero インストール オプション」で説明されているオプションを指定して実行します。

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

  1. Azure 上のワークロード クラスタに Velero をインストールするには、Velero Plugins for Azure リポジトリの「Install and start Velero」の手順に従います。
  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