veleroを使ってバックアップを試してみました。

ITのブログ

概要

Tanzu Kubernetes Grid 2.3.0でveleroとvelero plugin for vsphereのバックアップを試してみました。検証した手順と気を付けた方がよいことを記載しています。

注意事項

  • StorageClassのdefaultを使用している場合、「volumeBindingMode」を「WaitForFirstConsumer」に設定していると、PVのBoundをずっと待機し、タイムアウトしてしまうようです。「immediate」に変更すると上手くいきました。
  • PVの「RELAIM POLICY」を「Retain」の場合、が「download」上手く動作しなさそうでした。リストア時にPVを作成するために「Delete」にしておく方がよさそうです。

環境

#ソフトウェアバージョンvCPUメモリディスク備考
1VMware ESXi8.082
2vCenter Appliance8.0212GBdefault値
3Rockey Linux(bootstrap)9.126GB100GB・パッケージは最小限のインストール
4Tanzu CLI1.0.0TKG 2.3.0
5kubectl1.26.5
6velero CLI1.10.3

前提

  • ESXi/vCenter/Rockey Linux/TKGはデプロイと設定済みを前提とし、手順は省略します。

手順

velero CLIをインストール

1. veleroをダウンロードして、サーバに配置する。

2. veleroを展開する。

gzip -d velero-linux-v1.10.3+vmware.1.gz

3.veleroのバイナリを移動する。

mv velero-linux-v1.10.3+vmware.1 /usr/local/bin/

4.veleroのファイル名を変更する。

mv /usr/local/bin/velero-linux-v1.10.3+vmware.1 /usr/local/bin/velero

5.実行権限を付与する。

chmod +x /usr/local/bin/velero

オブジェクトストレージの起動

オブジェクトストレージとしては、TKGのドキュメントに記載があるMinioを使用しました。

1.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.minio用の認証情報を作成する。

vi secret.yaml

-----記載内容-----
[default]
aws_access_key_id=minio
aws_secret_access_key=minio123

veleroのデプロイ

1.veleroをデプロイしたいWorkload Clusterにコンテキストを変更する。

2.veleroをデプロイする。

velero install --provider aws --plugins "projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.6.2_vmware.1" --bucket mgmt --secret-file ./secret.yaml --backup-location-config "region=minio,s3ForcePathStyle=true,s3Url=http://<MinioのIPアドレス>:9000" --snapshot-location-config region="default"

3.csi-vsphereのシークレット情報を出力する。

kubectl -n vmware-system-csi get secret vsphere-config-secret -o jsonpath='{.data.csi-vsphere\.conf}'| base64 -d > csi-vsphere.conf

4.csi-vsphereのシークレット情報を使用してveleroのシークレット作成する。

kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf

5.プラグインが使用するConfigmapを作成する。

vi 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 for vsphereをデプロイする。

velero plugin add vsphereveleroplugin/velero-plugin-for-vsphere:v1.5.1

バックアップ

1.バックアップコマンド

velero backup create <バックアップ名> --include-namespaces <バックアップ対象のnamespace> --wait

2.バックアップ状況の確認

velero restore get

3.uploadリソースの確認

kubectl get upload -A 
kubectl describe upload <upload名> -n velero

4.snapshotリソースの確認

kubectl get snapshot -A
kubectl describe snapshot <snapshot名> -n <バックアップ対象のnamespace>

リストア

ストレージクラスの変更(もっと良い方法があるかもしれません)

1.ストレージクラスの設定を出力

kubectl get storageclass default -o yaml > default.yaml



2.ストレージクラスの設定を変更

vi default.yaml
-----変更箇所-----
volumeBindingMode: Immediate
-----変更箇所-----

3.ストレージクラスの削除

kubectl delete storageclass default

4.修正したストレージクラスの適用

kubectl delete apply -f default

リストア

1.リストアの実行

velero restore create <リストア名> --from-backup <バックアップ名>

2.downloadリソースの確認

kubectl get upload -A 
kubectl describe download <download名> -n velero

3.clonefromsnapshotsリソースの確認

kubectl get clonefromsnapshots -A
kubectl describe clonefromsnapshots <clonefromsnapshots名> -n <リストアのnamespace名>

コメント

タイトルとURLをコピーしました