概要
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 | メモリ | ディスク | 備考 |
1 | VMware ESXi | 8.0 | 8 | 2 | – | |
2 | vCenter Appliance | 8.0 | 2 | 12GB | default値 | |
3 | Rockey Linux(bootstrap) | 9.1 | 2 | 6GB | 100GB | ・パッケージは最小限のインストール |
4 | Tanzu CLI | 1.0.0 | – | – | – | TKG 2.3.0 |
5 | kubectl | 1.26.5 | – | – | – | |
6 | velero CLI | 1.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名>
コメント