このトピックでは、スタンドアローン管理クラスタを使用する TKG の Tanzu Kubernetes Grid (TKG) ワークロード クラスタでホストされているワークロードと動的ストレージ ボリュームをバックアップおよびリストアする方法について説明します。
クラスタ インフラストラクチャ、スタンドアローン管理クラスタ、ワークロード クラスタ オブジェクト自体をバックアップおよびリストアするには、「管理およびワークロード クラスタ インフラストラクチャのバックアップおよびリストア」を参照してください。
スーパーバイザー クラスタ、およびそれらのクラスタが作成したワークロード クラスタを含む vSphere with Tanzu クラスタをバックアップおよびリストアするには、VMware vSphere 8.0 のドキュメントの「vSphere with Tanzu のバックアップとリストア」を参照してください。
オープン ソース コミュニティ標準ツールである Velero を使用して、TKG スタンドアローン管理クラスタのインフラストラクチャとワークロードをバックアップおよびリストアできます。
Velero は、バックアップを保存するためにさまざまなストレージ プロバイダをサポートしています。Velero は、次の機能もサポートします。
Tanzu Kubernetes Grid サブスクリプションには、Tanzu Kubernetes Grid ダウンロード ページから入手可能な、テスト済みの互換性のある Velero ディストリビューションのサポートが含まれています。
TKG クラスタをバックアップおよびリストアするには、以下が必要です。
上記の前提条件を満たしたら、Velero を使用してクラスタ間でワークロードを移行することもできます。手順については、Velero ドキュメントの「Cluster Migration」および「Resource Filtering」を参照してください。
注意以前のバージョンの TKG で配布されている Velero CLI v1.8.1 またはそれ以前をすでにインストールしている場合は、v1.9.7 にアップグレードする必要があります。古いバージョンの Velero は、v1.9 およびそれ以降で使用される CRD では動作しません。
Velero CLI v1.9.7 をインストールするには、次の手順を実行します。
.gz
ファイルをダウンロードします。ファイル名は、velero-linux-
、velero-mac-
、または velero-windows64-
で始まります。gunzip
コマンドまたは任意の抽出ツールを使用してバイナリを解凍します。
gzip -d <RELEASE-TARBALL-NAME>.gz
プラットフォームの CLI バイナリの名前を velero
に変更し、実行可能であることを確認して、PATH
に追加します。
macOS および Linux プラットフォーム:
/usr/local/bin
フォルダに移動し、名前を velero
に変更します。chmod +x /usr/local/bin/velero
Windows プラットフォーム:
Program Files\velero
フォルダを作成し、そこにバイナリをコピーします。velero.exe
に変更します。velero
フォルダを右クリックして [プロパティ] > [セキュリティ] を選択し、ユーザー アカウントに [フル コントロール] 権限があることを確認します。env
を検索します。Path
行を選択し、[編集] をクリックします。velero
バイナリへのパスを入力します。Tanzu Kubernetes Grid ワークロード クラスタのコンテンツをバックアップするには、次のもののストレージ場所が必要です。
Velero ドキュメントの「Backup Storage Locations and Volume Snapshot Locations」を参照してください。Velero は、次のいずれかのストレージ プロバイダをサポートしています。
VMware では、一意のストレージ バケットを各クラスタ専用にすることをお勧めしています。
MinIO を設定するには:
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
認証情報をローカル ファイルに保存して、velero install
の --secret-file
オプションに渡します。次に例を示します。
[default]
aws_access_key_id=minio
aws_secret_access_key=minio123
vSphere では、クラスタ オブジェクト ストレージのバックアップとボリューム スナップショットが同じストレージの場所に保存されます。この場所は、Amazon Web Services (AWS) の S3 互換の外部ストレージ、または MinIO などの S3 プロバイダである必要があります。
vSphere で Velero のストレージを設定するには、v1.4.3 プラグインの「Velero Plugin for vSphere in Vanilla Kubernetes Cluster」を参照してください。
AWS で Velero のストレージを設定するには、Velero Plugins for AWS リポジトリに記載されている手順に従います。
プラグインごとに必要に応じて S3 ストレージを設定します。オブジェクト ストア プラグインはクラスタ オブジェクトのバックアップを格納および取得し、ボリューム スナップショットツールはデータ ボリュームを保存および取得します。
Azure で Velero のストレージを設定するには、Velero Plugins for Azure リポジトリに記載されている手順に従います。
プラグインごとに必要に応じて S3 ストレージを設定します。オブジェクト ストア プラグインはクラスタ オブジェクトのバックアップを格納および取得し、ボリューム スナップショットツールはデータ ボリュームを保存および取得します。
Velero サーバをワークロード クラスタに展開するには、velero install
コマンドを実行します。このコマンドは、velero
という名前の名前空間をクラスタに作成し、velero
という名前の展開をそこに配置します。
クラスタに Velero v1.8.1 またはそれ以前がインストールされている場合は、次の手順を実行して CRD を更新し、Velero v1.9.7 CLI と連携します。
CRD をアップグレードします。
velero install --crds-only --dry-run -o yaml | kubectl apply -f -
Velero イメージの場所を更新します。
kubectl -n velero set image deployment velero velero=projects.registry.vmware.com/tkg/velero/velero:v1.9.7_vmware.1
インストールされているプラグインに応じて、次のコマンドを 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
Restic DaemonSet イメージの場所を更新します。
kubectl -n velero set image DaemonSet restic restic=projects.registry.vmware.com/tkg/velero/velero:v1.9.7_vmware.1
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 をインストールします。
Tanzu Kubernetes Grid 管理クラスタとして機能する vSphere with Tanzu スーパーバイザー クラスタに Velero を展開するには、「vSphere with Tanzu のバックアップとリストア」を参照してください。
クラスタに TKG v1.6.x またはそれ以前から Velero がすでにインストールされている場合は、「以前の Velero バージョンからの CRD の更新」の手順に従います。
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
という名前の展開がそのクラスタに配置されます。
--secret-file
に前述の velero install
で認証情報ファイルを渡さなかった場合は、バックアップ S3 バケットから Velero へのアクセス権の付与を構成します。たとえば、AWS では、IAM ロール nodes.tkg.cloud.vmware.com
にポリシーを適用します。このロールは Velero などのホスト型アプリケーションを管理し、S3 バケットへのアクセスを許可します。
Velero Plugin for vSphere を追加すると、Velero は S3 バケットを使用して、クラスタ オブジェクトの格納に加えて、ワークロード データの CSI ボリューム スナップショットを保存できます。
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
(オプション)シークレット構成ファイル csi-vsphere.conf
内の vCenter Server の IP アドレス、ユーザー名、およびパスワードの値を確認します。これは次のようになります。
cluster-id = "CLUSTER-ID"
[VirtualCenter "VCENTER-IP"]
user = "USERNAME"
password = "PASSWORD"
port = "443"
構成ファイルを使用して、velero-vsphere-config-secret
シークレットを velero
名前空間内に作成します。
kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf
シークレットを参照する 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
ConfigMap
を適用します。
kubectl -n velero apply -f velero-plugin.conf
プラグインを追加します。
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
)。
Tanzu Kubernetes Grid アカウント用に作成したロールに次の VirtualMachine 権限を追加して、プラグインを有効にします(アカウントの作成時にそれらを含めなかった場合)。
AWS 上のワークロード クラスタに Velero をインストールするには、Velero Plugins for AWS リポジトリの「Install and start Velero」の手順に従います。
クラスタに TKG v1.6.x またはそれ以前から Velero がすでにインストールされている場合は、「以前の Velero バージョンからの CRD の更新」の手順に従います。
velero install
を、「Velero インストール オプション」で説明されているオプションを指定して実行します。
Azure 上のワークロード クラスタに Velero をインストールするには、Velero Plugins for Azure リポジトリの「Install and start Velero」の手順に従います。
クラスタに TKG v1.6.x またはそれ以前から Velero がすでにインストールされている場合は、「以前の Velero バージョンからの CRD の更新」の手順に従います。
velero install
を、「Velero インストール オプション」で説明されているオプションを指定して実行します。
Velero を使用して、クラスタ全体または特定の名前空間の、ワークロード クラスタの現在のワークロードとパーシステント ボリュームの状態をバックアップおよびリストアします。
ワークロード クラスタのコンテンツをバックアップするには、次の手順を実行します。
インフラストラクチャに応じて「クラスタへの Velero サーバの展開」の説明に従って、ワークロード クラスタに Velero サーバを展開します。必要に応じて、Velero Plugin for vSphere も展開します。
クラスタのコンテンツをバックアップします。
velero backup create your_backup_name
velero backup
で transport is closing
エラーが返される場合は、Velero ドキュメントの「Update resource requests and limits after install」の説明に従って、メモリ制限を増やしてから再試行してください。
注Windows およびマルチ OS ワークロード クラスタのバックアップとリストアはサポートされていません。
ワークロード クラスタのコンテンツをバックアップからリストアするには、次の手順を実行します。
新しいクラスタを作成します。クラスタのバックアップを既存のクラスタにリストアすることはできません。
インフラストラクチャに応じて「クラスタへの Velero サーバの展開」の説明に従って、新しいクラスタに Velero サーバを展開します。必要に応じて、Velero Plugin for vSphere も展開します。
クラスタのコンテンツをリストアします。
velero backup get
velero restore create your_restore_name --from-backup your_backup_name