スーパーバイザー上の TKG クラスタで実行中のワークロードをバックアップおよびリストアするには、データストアを作成し、Kubernetes クラスタに Velero と Restic をインストールします。

概要

TKG クラスタは仮想マシン ノードで実行されます。TKG クラスタ ワークロードをバックアップおよびリストアするには、そのクラスタに Velero と Restic をインストールします。

前提条件

Tanzu Kubernetes クラスタで実行されているワークロードをバックアップおよびリストアするために Velero と Restic をインストールするための次の前提条件を環境が満たしていることを確認します。
  • いくつかのワークロード バックアップを保存するために十分なストレージを持つ Linux 仮想マシン。この仮想マシンに MinIO をインストールします。
  • kubectl 向けの vSphere プラグインkubectl を含む vSphere 向け Kubernetes CLI Tools がインストールされる Linux 仮想マシン。このクライアント仮想マシンに Velero CLI をインストールします。このような仮想マシンがない場合は Velero CLI をローカルにインストールできますが、条件に合わせてインストール手順を調整する必要があります。
  • Kubernetes 環境がインターネットにアクセスでき、クライアント仮想マシンからアクセスできること。

MinIO オブジェクト ストアのインストールと構成

Velero は、Kubernetes ワークロードのバックアップ先として S3 互換のオブジェクト ストアを必要とします。Velero は、そのような オブジェクト ストア プロバイダをいくつかサポートしています。簡単にするために、これらの手順では、オブジェクト ストア仮想マシンでローカルに実行される S3 互換のストレージ サービスである MinIO を使用します。
  1. MinIO をインストールします。
    wget https://dl.min.io/server/minio/release/linux-amd64/minio
  2. MinIO に実行権限を付与します。
    chmod +x minio
  3. ファイル システムに MinIO 用のディレクトリを作成します。
    mkdir /DATA-MINIO
  4. MinIO サーバを起動します。
    ./minio server /DATA-MINIO
  5. MinIO サーバが起動すると、エンドポイント URL、AccessKey、SecretKey などの重要なデータストア インスタンスの詳細が得られます。表に示されているエンドポイント URL、AccessKey、SecretKey を記録します。
    データストア メタデータ
    エンドポイント URL
    AccessKey
    SecretKey
  6. ブラウザで MinIO サーバのエンドポイント URL を指定して、MinIO データストアを参照します。
  7. MinIO サーバにログインし、AccessKey と SecretKey を指定します。
  8. MinIO をサービスとして有効にするには、minio.service スクリプトをダウンロードして、MinIO に自動起動を構成します。
    curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
  9. minio.service スクリプトを編集し、ExecStart に次の値を追加します。
    ExecStart=/usr/local/bin/minio server /DATA-MINIO path
  10. 変更したスクリプトを保存します。
  11. 次のコマンドを実行して MinIO サービスを構成します。
    cp minio.service /etc/systemd/system 
    cp minio /usr/local/bin/ 
    systemctl daemon-reload 
    systemctl start minio 
    systemctl status minio 
    systemctl enable minio
  12. MinIO ブラウザを起動し、オブジェクト ストアにログインして、バックアップとリストア用の MinIO バケットを作成します。
  13. バケット作成のアイコンをクリックします。
  14. たとえば my-cluster-backups のように、バケット名を入力します。
  15. バケットが作成されたことを確認します。
  16. デフォルトでは、新しい MinIO バケットは読み取り専用です。Velero スタンドアローンのバックアップとリストアの場合、MinIO バケットは読み取り/書き込みである必要があります。バケットを読み取り/書き込みに設定するには、バケットを選択し、省略記号(点が並んだ記号)のリンクをクリックします。
  17. [ポリシーの編集] を選択します。
  18. ポリシーを [読み取りおよび書き込み] に変更します。
  19. [追加] をクリックします。
  20. ダイアログ ボックスを閉じるために、X をクリックします。

Velero CLI のインストール

仮想マシン クライアントまたはローカル マシンに Velero CLI をインストールします。

このドキュメントで使用されるバージョンは、 Tanzu Kubernetes Grid 2.2.0 用 Velero 1.9.7 です。
  1. VMware Customer Connect ポータルの Tanzu Kubernetes Grid 製品ダウンロード ページから Velero をダウンロードします。
    注: VMware からサポートを受けるには、VMware によって署名された Velero バイナリを使用する必要があります。
  2. コマンド ラインを開き、Velero CLI をダウンロードしたディレクトリに移動します。
  3. ダウンロード ファイルを解凍します。例:
    gunzip velero-linux-vX.X.X_vmware.1.gz
  4. Velero バイナリを確認します。
    ls -l
  5. Velero CLI に実行権限を付与します。
    chmod +x velero-linux-vX.X.X_vmware.1 
  6. Velero CLI をシステム パスに移動して、グローバルに使用可能にします。
    cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero 
  7. インストールを確認します。
    velero version

Tanzu Kubernetes クラスタへの Velero と Restic のインストール

Velero CLI のコンテキストは、kubectl のコンテキストに自動的に従います。Velero CLI コマンドを実行して Velero と Restic をターゲット クラスタにインストールする前に、kubectl のコンテキストを設定します。
  1. MinIO バケットの名前を取得します。たとえば、my-cluster-backups です。
  2. MinIO バケットの AccessKey と SecretKey を取得します。
  3. Velero CLI の動作対象となるクラスタが認識されるように、コンテキストをターゲットの Kubernetes クラスタに設定します。
    kubectl config use-context tkgs-cluster-name
  4. credentials-minio という名前のシークレット ファイルを作成します。収集した MinIO サーバ アクセス認証情報を使用して、ファイルを更新します。例:
    aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ
    aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
    注: 「バックアップ ストアの取得中にエラーが発生しました」というエラー メッセージと「NoCredentialProviders: チェーン内に有効なプロバイダがありません」という説明が表示された場合は、認証情報ファイルの先頭に [default] 行を追加します。例:
    [default]
    aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ
    aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
  5. ファイルを保存し、ファイルが正しい場所に置かれたことを確認します。
    ls
  6. 次のコマンドを実行して、ターゲット Kubernetes クラスタに Velero と Restic をインストールします。両方の URL を MinIO インスタンスの URL に置き換えます。
    velero install \
    --provider aws \
    --plugins velero/velero-plugin-for-aws:v1.0.0 \
    --bucket tkgs-velero \
    --secret-file ./credentials-minio \
    --use-volume-snapshots=false \
    --use-restic \
    --backup-location-config \
    region=minio,s3ForcePathStyle="true",s3Url=http://10.199.17.63:9000,publicUrl=http://10.199.17.63:9000
  7. Velero と Restic のインストールを確認します。
    kubectl logs deployment/velero -n velero
  8. velero 名前空間を確認します。
    kubectl get ns
  9. velero ポッドと restic ポッドを確認します。
    kubectl get all -n velero

Restic DaemonSet のトラブルシューティング(必要な場合)

Kubernetes クラスタで 3 ポッドの Restic DaemonSet を実行するには、Restic DaemonSet の仕様を更新して hostPath を変更することが必要な場合があります。この問題の詳細については、Velero のドキュメントで Restic Integrationを参照してください。
  1. 3 ポッドの Restic DaemonSet を確認します。
    kubectl get pod -n velero

    ポッドのステータスが CrashLoopBackOff の場合は、次のように編集します。

  2. edit コマンドを実行します。
    kubectl edit daemonset restic -n velero
  3. hostPath を /var/lib/kubelet/pods から /var/vcap/data/kubelet/pods に変更します。
    - hostPath:
        path: /var/vcap/data/kubelet/pods
  4. ファイルを保存します。
  5. 3 ポッドの Restic DaemonSet を確認します。
    kubectl get pod -n velero
    NAME                      READY   STATUS    RESTARTS   AGE
    restic-5jln8              1/1     Running   0          73s
    restic-bpvtq              1/1     Running   0          73s
    restic-vg8j7              1/1     Running   0          73s
    velero-72c84322d9-le7bd   1/1     Running   0          10m

Velero のメモリ制限の調整(必要な場合)

Velero のバックアップが数時間に渡って status=InProgress を返す場合は、メモリ設定の limits と requests の値を増やします。
  1. 次のコマンドを実行します。
    kubectl edit deployment/velero -n velero
  2. メモリ設定の limits と requests をデフォルトの 256Mi および 128Mi から 512Mi および 256Mi に変更します。
        
    ports:
    - containerPort: 8085
      name: metrics
      protocol: TCP
    resources:
      limits:
        cpu: "1"
        memory: 512Mi
      requests:
        cpu: 500m
        memory: 256Mi
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File