スーパーバイザー上の 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 を使用します。
- MinIO をインストールします。
wget https://dl.min.io/server/minio/release/linux-amd64/minio
- MinIO に実行権限を付与します。
chmod +x minio
- ファイル システムに MinIO 用のディレクトリを作成します。
mkdir /DATA-MINIO
- MinIO サーバを起動します。
./minio server /DATA-MINIO
- MinIO サーバが起動すると、エンドポイント URL、AccessKey、SecretKey などの重要なデータストア インスタンスの詳細が得られます。表に示されているエンドポイント URL、AccessKey、SecretKey を記録します。
データストア メタデータ 値 エンドポイント URL AccessKey SecretKey - ブラウザで MinIO サーバのエンドポイント URL を指定して、MinIO データストアを参照します。
- MinIO サーバにログインし、AccessKey と SecretKey を指定します。
- MinIO をサービスとして有効にするには、
minio.service
スクリプトをダウンロードして、MinIO に自動起動を構成します。curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
minio.service
スクリプトを編集し、ExecStart
に次の値を追加します。ExecStart=/usr/local/bin/minio server /DATA-MINIO path
- 変更したスクリプトを保存します。
- 次のコマンドを実行して MinIO サービスを構成します。
cp minio.service /etc/systemd/system cp minio /usr/local/bin/ systemctl daemon-reload systemctl start minio systemctl status minio systemctl enable minio
- MinIO ブラウザを起動し、オブジェクト ストアにログインして、バックアップとリストア用の MinIO バケットを作成します。
- バケット作成のアイコンをクリックします。
- たとえば
my-cluster-backups
のように、バケット名を入力します。 - バケットが作成されたことを確認します。
- デフォルトでは、新しい MinIO バケットは読み取り専用です。Velero スタンドアローンのバックアップとリストアの場合、MinIO バケットは読み取り/書き込みである必要があります。バケットを読み取り/書き込みに設定するには、バケットを選択し、省略記号(点が並んだ記号)のリンクをクリックします。
- [ポリシーの編集] を選択します。
- ポリシーを [読み取りおよび書き込み] に変更します。
- [追加] をクリックします。
- ダイアログ ボックスを閉じるために、X をクリックします。
Velero CLI のインストール
仮想マシン クライアントまたはローカル マシンに Velero CLI をインストールします。
このドキュメントで使用されるバージョンは、
Tanzu Kubernetes Grid 2.2.0 用 Velero 1.9.7 です。
- VMware Customer Connect ポータルの Tanzu Kubernetes Grid 製品ダウンロード ページから Velero をダウンロードします。
注: VMware からサポートを受けるには、VMware によって署名された Velero バイナリを使用する必要があります。
- コマンド ラインを開き、Velero CLI をダウンロードしたディレクトリに移動します。
- ダウンロード ファイルを解凍します。例:
gunzip velero-linux-vX.X.X_vmware.1.gz
- Velero バイナリを確認します。
ls -l
- Velero CLI に実行権限を付与します。
chmod +x velero-linux-vX.X.X_vmware.1
- Velero CLI をシステム パスに移動して、グローバルに使用可能にします。
cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero
- インストールを確認します。
velero version
Tanzu Kubernetes クラスタへの Velero と Restic のインストール
Velero CLI のコンテキストは、kubectl のコンテキストに自動的に従います。Velero CLI コマンドを実行して Velero と Restic をターゲット クラスタにインストールする前に、kubectl のコンテキストを設定します。
- MinIO バケットの名前を取得します。たとえば、
my-cluster-backups
です。 - MinIO バケットの AccessKey と SecretKey を取得します。
- Velero CLI の動作対象となるクラスタが認識されるように、コンテキストをターゲットの Kubernetes クラスタに設定します。
kubectl config use-context tkgs-cluster-name
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
- ファイルを保存し、ファイルが正しい場所に置かれたことを確認します。
ls
- 次のコマンドを実行して、ターゲット 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
- Velero と Restic のインストールを確認します。
kubectl logs deployment/velero -n velero
velero
名前空間を確認します。kubectl get ns
velero
ポッドとrestic
ポッドを確認します。kubectl get all -n velero
Restic DaemonSet のトラブルシューティング(必要な場合)
Kubernetes クラスタで 3 ポッドの Restic DaemonSet を実行するには、Restic DaemonSet の仕様を更新して hostPath を変更することが必要な場合があります。この問題の詳細については、Velero のドキュメントで
Restic Integrationを参照してください。
- 3 ポッドの Restic DaemonSet を確認します。
kubectl get pod -n velero
ポッドのステータスが CrashLoopBackOff の場合は、次のように編集します。
edit
コマンドを実行します。kubectl edit daemonset restic -n velero
- hostPath を
/var/lib/kubelet/pods
から/var/vcap/data/kubelet/pods
に変更します。- hostPath: path: /var/vcap/data/kubelet/pods
- ファイルを保存します。
- 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 の値を増やします。
- 次のコマンドを実行します。
kubectl edit deployment/velero -n velero
- メモリ設定の 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