[[425938]] Velero (https://velero.io) は、Kubernetes クラスター リソースと永続ボリュームをバックアップおよび復元する機能を提供できます。 Velero はパブリック クラウドまたはローカルに構築されたプライベート クラウド環境にインストールでき、次の機能が提供されます。 - クラスターデータをバックアップし、クラスター障害が発生した場合に復元する
- クラスターリソースを別のクラスターに移行する
- 本番環境のクラスターを開発環境とテスト環境のクラスターにコピーする
Velero は、クラスター上で実行されるサーバーと、ローカルで実行されるコマンドライン クライアントで構成されます。 原理各 Velero 操作 (オンデマンド バックアップ、スケジュールされたバックアップ、復元など) は CRD カスタム リソースです。 Velero はクラスター内のすべてのオブジェクトをバックアップまたは復元できるほか、タイプ、名前空間、タグ別にオブジェクトをフィルタリングすることもできます。 Velero は、Kubernetes を使用した災害復旧に最適であり、クラスターでシステム操作 (アップグレードなど) を実行する前にアプリケーション状態のスナップショットを取得するのにも最適です。 オンデマンドバックアップオンデマンド バックアップ操作では、コピーされた Kubernetes オブジェクトの圧縮ファイルをクラウド オブジェクト ストレージにアップロードしたり、クラウド環境が提供する API を呼び出して永続ボリュームのディスク スナップショットを作成したりできます。オプションで、バックアップ中に実行されるバックアップ フックを指定できます。たとえば、スナップショットを取得する前に、データベースにメモリ内のバッファーをディスクにフラッシュするように指示することができます。 クラスター バックアップは厳密にはアトミックではないことに注意することが重要です。バックアップの進行中に Kubernetes オブジェクトが作成または編集された場合、それらのオブジェクトはバックアップに含まれない可能性があります。それは可能です。 スケジュールされたバックアップスケジュールされた操作を通じて、データを定期的にバックアップできます。最初のバックアップはスケジュールが最初に作成されたときに実行され、その後のバックアップはスケジュールで指定された間隔で実行されます。これらの間隔は Cron 式によって指定されます。 スケジュールされたバックアップの名前は <SCHEDULE NAME>-<TIMESTAMP> です。<TIMESTAMP> の形式は YYYYMMDDhhmmss です。 バックアップと復元復元操作により、以前に作成したバックアップからすべてのオブジェクトと永続ボリュームを復元できます。さらに、オブジェクトと永続ボリュームのサブセットのみを復元することもできます。 Velero は複数の名前空間の再マッピングをサポートします。たとえば、復元操作では、名前空間 abc 内のオブジェクトを名前空間 def の下に再作成したり、名前空間 123 内のオブジェクトを 456 の下に再作成したりできます。 復元のデフォルト名は <BACKUP NAME>-<TIMESTAMP> です。<TIMESTAMP> の形式は YYYYMMDDhhmmss です。カスタム名を指定することもできます。復元されたオブジェクトには、キーvelero.io/restore-nameと値を持つタグも含まれています。 <名前を復元>。 デフォルトでは、バックアップの保存場所は読み取り/書き込みモードで作成されますが、復元中にバックアップの保存場所を読み取り専用モードで構成することができます。これにより、その保存場所のバックアップの作成と削除が無効になり、復元シナリオ中に誤ってバックアップが作成または削除されないようにするのに役立ちます。さらに、復元中またはリソースの復元後に実行される復元フックを指定することもできます。たとえば、データベース アプリケーション コンテナーを起動する前に、カスタム データベース復元操作を実行する必要がある場合があります。 バックアッププロセスvelero backup create test-backup コマンドを実行すると、次の操作が実行されます。 - VeleroクライアントはKubernetes APIサーバーを呼び出してバックアップCRDオブジェクトを作成します。
- バックアップコントローラは、新しいバックアップオブジェクトの作成を監視し、検証を実行します。
- バックアップコントローラは、APIサーバーにクエリを実行してリソースを取得し、バックアップ用のデータを収集することで、バックアップの実行を開始します。
- バックアップ コントローラーは、S3 などのオブジェクト ストレージ サービスを呼び出して、バックアップ ファイルをアップロードします。
デフォルトでは、velero backup create は任意の永続ボリュームのディスク スナップショットをサポートします。追加のパラメータを指定してスナップショットを調整できます。 --snapshot-volumes=false オプションを使用してスナップショットを無効にすることができます。 バックアップの有効期限を設定するバックアップを作成するときに、フラグ --ttl を追加して TTL を指定できます。指定しない場合、デフォルトの TTL 値は 30 日になります。 Velero は、バックアップ リソースの有効期限が切れたことを検出すると、次のように対応するバックアップ データを削除します。 - バックアップリソース
- クラウドオブジェクトストレージからファイルをバックアップする
- すべてのPersistentVolumeスナップショット
- すべての関連付けを復元する
同期オブジェクトストレージVelero はオブジェクト ストレージをリソースのソースとして扱います。常に正しいバックアップ リソースが存在することを継続的に確認します。バケット内に正しくフォーマットされたバックアップ ファイルが存在するが、Kubernetes API サーバー内に対応するバックアップ リソースが存在しない場合、Velero はオブジェクト ストレージから Kubernetes に情報を同期します。これにより、元のバックアップ オブジェクトが新しいクラスターに存在しないクラスター移行シナリオで復元機能が動作できるようになります。同様に、バックアップ オブジェクトが Kubernetes に存在するがオブジェクト ストアには存在しない場合は、バックアップ アーカイブが存在しなくなるため、Kubernetes から削除されます。 バックアップの保存場所とボリュームのスナップショットの場所Velero には、BackupStorageLocation と VolumeSnapshotLocation という 2 つのカスタム リソースがあり、これらは Velero バックアップとそれに関連付けられた永続ボリューム スナップショットの保存場所を構成するために使用されます。 - BackupStorageLocation: ストレージ領域、すべての Velero データが保存されるストレージ領域内のプレフィックス、およびその他のプロバイダー固有のフィールドのセットとして定義されます。このセクションに含まれるフィールドについては、次のセクションで詳しく説明します。
- VolumeSnapshotLocation: プロバイダー固有のフィールド (AWS リージョン、Azure リソース グループ、Portworx スナップショット タイプなど) によって完全に定義されます。
ユーザーは、1 つ以上の BackupStorageLocations オブジェクトを事前に構成したり、1 つ以上の VolumeSnapshotLocations オブジェクトを事前に構成したり、バックアップを作成するときにバックアップと関連するスナップショットを保存する場所を選択したりできます。 この構成は、次のようなさまざまな用途をサポートするように設計されています。 - 単一の Velero バックアップで複数の永続ボリュームのスナップショットを作成します。たとえば、EBSボリュームとPortworxボリュームの両方を持つクラスターでは
- 異なる地域の異なるストレージにデータをバックアップする
- これをサポートするボリュームプロバイダー (Portworx など) の場合、一部のスナップショットをローカル クラスターに保存し、他のスナップショットをクラウドに保存することが可能です。
インストールGithub リリース ページ (https://github.com/vmware-tanzu/velero/releases) から指定された velero バイナリ クライアント インストール パッケージをダウンロードします。たとえば、ここでは最新の安定バージョン v1.6.3 をダウンロードします。 - ➜ ~ wget https://github.com/vmware-tanzu/velero/releases/download/v1.6.3/velero-v1.6.3-darwin-amd64.tar.gz
- # 制限がある場合は、ダウンロードを高速化するために次のURLに置き換えることもできます
- # wget https://download.fastgit.org/vmware-tanzu/velero/releases/download/v1.6.3/velero-v1.6.3-darwin-amd64.tar.gz
- ➜ ~ tar -zxvf velero-v1.6.3-darwin-amd64.tar.gz && cd velero-v1.6.3-darwin-amd64
- ➜ ~ 木。
- 。
- ├── ライセンス
- ├── 例
- │ ├── README.md
- │ ├── ミニオ
- │ │ └── 00-minio-deployment.yaml
- │ └── nginxアプリ
- │ ├── README.md
- │ ├── ベース.yaml
- │ └── -pv.yaml付き
- └── ベレロ
-
- 3 つのディレクトリ、7 つのファイル
ルート ディレクトリにある velero バイナリ ファイルを PATH パスにコピーします。 - ➜ ~ cp velero /usr/ local /bin && chmod +x /usr/ local /bin/velero
- ➜ ~ ベレロバージョン
- クライアント:
- バージョン: v1.6.3
- Gitコミット: 5fe3a50bfddc2becb4c0bd5e2d3d4053a23e95d2
- <サーバー バージョンの取得中にエラーが発生しました:種類"ServerStatusRequest"に一致するものがありません バージョン「velero.io/v1 」 >
MINIOのインストールここでは、クラウド環境のオブジェクト ストレージを minio を使用して置き換えることができます。上記で解凍した圧縮パッケージには、リソース リスト ファイル examples/minio/00-minio-deployment.yaml が含まれています。テストの便宜上、Service を NodePort タイプに変更できます。コンソール ページへのアクセス エントリを提供するには、コンソール アドレスを構成できます。完全なリソース リスト ファイルは次のとおりです。 - APIバージョン: v1
- 種類: 名前空間
- メタデータ:
- 名前: ベレロ
-
- APIバージョン: アプリ/v1
- 種類: デプロイメント
- メタデータ:
- 名前空間: velero
- 名前: ミニオ
- ラベル:
- コンポーネント: minio
- 仕様:
- 戦略:
- タイプ: 再作成
- セレクタ:
- 一致ラベル:
- コンポーネント: minio
- テンプレート:
- メタデータ:
- ラベル:
- コンポーネント: minio
- 仕様:
- ボリューム:
- -名前: ストレージ
- 空ディレクトリ: {}
- -名前: 設定
- 空ディレクトリ: {}
- コンテナ:
- -名前:ミニオ
- 画像: minio/minio:latest
- イメージプルポリシー: IfNotPresent
- 引数:
- - サーバー
- - /ストレージ
- -
- -
- 環境:
- -名前: MINIO_ACCESS_KEY
- 値: "minio"
- -名前: MINIO_SECRET_KEY
- 値: "minio123"
- ポート:
- - コンテナポート: 9000
- - コンテナポート: 9001
- ボリュームマウント:
- -名前: ストレージ
- マウントパス: "/storage"
- -名前: 設定
- マウントパス: "/config"
-
- APIバージョン: v1
- 種類: サービス
- メタデータ:
- 名前空間: velero
- 名前: ミニオ
- ラベル:
- コンポーネント: minio
- 仕様:
- タイプ: NodePort
- ポート:
- -名前: api
- ポート: 9000
- ターゲットポート: 9000
- -名前: コンソール
- ポート: 9001
- ターゲットポート: 9001
- セレクタ:
- コンポーネント: minio
-
- APIバージョン: batch/v1
- 種類: 仕事
- メタデータ:
- 名前空間: velero
- 名前: minio-setup
- ラベル:
- コンポーネント: minio
- 仕様:
- テンプレート:
- メタデータ:
- 名前: minio-setup
- 仕様:
- 再起動ポリシー: OnFailure
- ボリューム:
- -名前: 設定
- 空ディレクトリ: {}
- コンテナ:
- -名前: mc
- 画像: minio/mc:latest
- イメージプルポリシー: IfNotPresent
- 指示:
- - /bin/sh
- - -c
- - 「mc --config-dir=/config config host add velero http://minio:9000 minio minio123 && mc --config-dir=/config mb -p velero/velero」
- ボリュームマウント:
- -名前: 設定
- マウントパス: "/config"
次に、Kubernetes クラスターに直接デプロイします。
- ➜ ~ kubectl apply -f examples/minio/00-minio-deployment.yaml
- 名前空間/velero が作成されました
- デプロイメント.apps/minio が作成されました
- サービス/minio を作成しました
- job.batch/minio-setup が作成されました
- ➜ ~ kubectl ポッドを取得 -n velero
- 名前準備完了 ステータス 再起動 年齢
- minio-5b96ffddf8-x8s7p 1/1 実行中 0 2分48秒
- minio-setup-rhc4d 0/1 完了 1 2分48秒
- ➜ ~ kubectl get svc -n velero
- 名前タイプ クラスター IP 外部 IP ポート 年齢
- minio ノードポート 10.103.132.34 <なし> 9000:32036/TCP、9001:31925/TCP 3分56秒
次にhttp://を使用します。 :31925 minio のコンソール ページにアクセスし、minio と minio を使用してログインします。 もちろん、異なる Kubernetes およびストレージ プール クラスターでデータをバックアップおよび復元する必要がある場合は、クラスターで壊滅的な障害が発生したときにバックアップ データが影響を受けないように、Kubernetes クラスターの外部に minio サーバーをインストールする必要があります。バイナリモードでインストールできます。 minioをインストールするサーバーにバイナリパッケージをダウンロードします - ➜ ~ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
- ➜ ~ chmod +x ミニオ
- ➜ ~ sudo mv minio /usr/ local /bin/
- ➜ ~ minio
オブジェクトストレージ用のディスクを準備します。ここではこの手順をスキップします。 systemd を使用して minio サービスを管理できます。 systemd init システムを使用してシステムを実行する場合は、minio サービスを実行するためのユーザーとグループを作成してください。 - ➜ ~ sudo groupadd
- ➜ ~ sudo useradd -s /sbin/nologin
minio ユーザーに /data ディレクトリ (上記の手順で準備したディスク マウント場所) の所有権を付与します。 - ➜ ~ sudo chown -R minio:minio /data/
minio 用の systemd サービス ユニット ファイルを作成します。 - ➜ ~ vi /etc/systemd/system/minio.service
- [ユニット]
- 説明=ミニオ
- ドキュメント=https://docs.minio.io
- 欲しいもの=ネットワークオンライン.ターゲット
- =network-online.targetの後
- AssertFileIsExecutable=/usr/ローカル/bin/minio
-
- [サービス]
- 作業ディレクトリ=/data
- ユーザー=minio
- グループ= minio
- 環境ファイル=-/etc/デフォルト/minio
- ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"変数 MINIO_VOLUMES が /etc/default/minio に設定されていません\"; exit 1; fi"
- ExecStart=/usr/ローカル/bin/minio サーバー $MINIO_OPTS $MINIO_VOLUMES
- # systemd がこのサービスを常に再起動するようにする
- 再起動=常に
- #このプロセスで開くことができるファイル記述子の最大数を指定します
- 制限NOFILE=65536
- # タイムアウトロジックを無効にして、プロセスが停止するまで待機します
- タイムアウトストップ秒=無限
- SendSIGKILL=いいえ
-
- [インストール]
- WantedBy =マルチユーザー.ターゲット
minio 環境ファイル /etc/default/minio を作成します。 - # Minio サーバーに使用するボリューム。
- MINIO_VOLUMES = "/データ"
-
- #カスタム ポートでMinio を実行する場合に使用します。
- MINIO_OPTS= "--アドレス:9000"
-
- # アクセスキー サーバーの。
- MINIO_ACCESS_KEY=ミニオ
-
- # 秘密鍵 サーバーの。
- MINIO_SECRET_KEY=minio123
MINIO_ACCESS_KEY は少なくとも 3 文字の長さのアクセス キーであり、MINIO_SECRET_KEY は少なくとも 8 文字の長さのキーです。 systemd をリロードし、 minio サービスを開始します。 - ➜ ~ sudo systemctl デーモンリロード
- ➜ ~ sudo systemctl start minio
minio の詳細については、公式ドキュメント https://docs.min.io/ を参照してください。 veleroサーバーをインストールするvelero クライアントを使用してサーバーをインストールすることも、Helm Chart を使用してインストールすることもできます。たとえば、ここではクライアントを使用してインストールします。 velero コマンドは、デフォルトで kubectl によって構成されたクラスター コンテキストを読み取るため、前提として、velero クライアントが配置されているノードには、クラスターにアクセスできる kubeconfig 構成があります。 まず、キー ファイルを準備し、現在のディレクトリに次の内容の空のテキスト ファイルを作成します。 - [デフォルト]
- aws_access_key_id=<アクセスキーID>
- aws_secret_access_key=<シークレットアクセスキー>
前の手順で minio の対応するアクセス キー ID とシークレット アクセス キーに置き換えます。 minio が Kubernetes クラスターにインストールされている場合は、次のように velero サーバーをインストールします。 - ➜ ~ velero インストール \
-
-
-
-
-
-
-
-
-
- ......
- DaemonSet/restic: 作成されました
- Veleroがインストールされました! ⛵ 「kubectl logsdeployment/velero -n velero」を使用します。 に ステータスを表示します。
- ➜ ~ kubectl ポッドを取得 -n velero
- 名前準備完了 ステータス 再起動 年齢
- minio-5b96ffddf8-x8s7p 1/1 実行中 0 4分1秒
- minio-setup-rhc4d 0/1 完了 1 4分1秒
- retic-2qn94 1/1 ランニング 0 22 秒
- velero-664598d6cc-dpvxn 1/1 実行中 0 22 秒
minio をオブジェクト ストレージとして使用するため、minio は S3 と互換性があり、ここで構成するプロバイダー (使用する Velero プラグインの種類を宣言) は aws です。--secret-file は minio にアクセスするためのキーを提供するために使用され、--use-restic はオープン ソースの無料バックアップ ツール restic を使用して永続ボリューム データをバックアップおよび復元することを意味します。このパラメータを有効にすると、restic という名前の DaemonSet オブジェクトがデプロイされ、--plugins は velero プラグインを使用します。 AWS S3互換プラグインを使用します。 インストールが完了すると、velero サーバーが正常にデプロイされます。 テストたとえば、MySQL アプリケーションをデプロイする場合、リソース リスト ファイルは次のようになります。 - #mysql-デプロイメント.yaml
- APIバージョン: v1
- 種類: PersistentVolumeClaim
- メタデータ:
- 名前: mysql-pv-claim
- ラベル:
- アプリ:mysql
- 仕様:
- アクセスモード:
- -一度だけ読み書き可能
- リソース:
- リクエスト:
- ストレージ: 20Gi
-
- APIバージョン: アプリ/v1
- 種類: デプロイメント
- メタデータ:
- 名前: mysql
- ラベル:
- アプリ:mysql
- 仕様:
- セレクタ:
- 一致ラベル:
- アプリ:mysql
- テンプレート:
- メタデータ:
- ラベル:
- アプリ:mysql
- 仕様:
- コンテナ:
- - イメージ:mysql:5.6
- 名前: mysql
- 環境:
- -名前: MYSQL_ROOT_PASSWORD
- 値:
- シークレットキーリファレンス:
- 名前: mysql-pass
- キー:パスワード
- ライブネスプローブ:
- tcpソケット:
- ポート: 3306
- ポート:
- - コンテナポート: 3306
- 名前: mysql
- ボリュームマウント:
- -名前: mysql-persistent-storage
- マウントパス: /var/lib/mysql
- ボリューム:
- -名前: mysql-persistent-storage
- 永続ボリュームクレーム:
- クレーム名: mysql-pv-claim
上記のアプリケーションを直接デプロイします。 - ➜ ~ kubectl名前空間 kube-demoを作成します
- ➜ ~ kubectlシークレットジェネリック mysql-pass を作成します
- ➜ ~ kubectl apply -f mysql-deployment.yaml -n kube-demo
- ➜ ~ kubectl ポッドを取得 -n kube-demo
- 名前準備完了 ステータス 再起動 年齢
- mysql-c57f676dd-gw5pf 1/1 実行中 0 51秒
たとえば、新しいデータベース velero を作成します。 - ➜ ~ kubectl exec -it -n kube-demo mysql-c57f676dd-gw5pf
- mysql-c57f676dd-gw5pf:/# mysql -uroot -p
- パスワードを入力してください:
- MySQL モニターへようこそ。コマンド終了 と;または\g。
- MySQL接続IDは7です
- サーバーバージョン: 5.6.51 MySQL コミュニティサーバー (GPL)
-
- Copyright (c) 2000、2021、Oracleおよび/またはその関連会社。無断転載を禁じます。
-
- OracleはOracle Corporationおよび/またはその関連会社の登録商標です。
- 関連会社。その他の名称は、それぞれの商標である可能性があります。
- 所有者。
-
- 「help;」と入力します または '\h' 助けを求めて。 '\c'と入力 現在の入力ステートメントをクリアします。
-
- mysql> データベースを表示します。
- +
- |データベース|
- +
- |情報スキーマ |
- |mysql |
- |パフォーマンススキーマ |
- +
- 3行 で 設定(0.00 秒)
-
- mysql>作成 データベースvelero;
- クエリは正常、1 行が影響を受けました (0.00 秒)
-
- mysql> データベースを表示します。
- +
- |データベース|
- +
- |情報スキーマ |
- |mysql |
- |パフォーマンススキーマ |
- |ベレロ
- +
- 4行 で 設定(0.00 秒)
-
- マイSQL>
それではバックアップを実行しましょう: - ➜ ~ velero バックアップを作成します。mysql -backup
- バックアップ要求「mysql-backup」が正常に送信されました。
- 詳細については、`velero backup describe mysql-backup`または`velero backup logs mysql-backup`を実行してください。
指定した --default-volumes-to-restic パラメータは、永続ボリュームを minio にバックアップするために restic が使用されることを示します。 --include-namespaces は、クラスター リソースを除く、名前空間の下にあるすべてのリソースをバックアップするために使用されます。さらに、--include-resources を使用してバックアップするリソース タイプを指定し、--include-cluster-resources を使用してクラスター リソースをバックアップするかどうかを指定できます。 このコマンドは、プロジェクト (名前空間) のバックアップの作成を要求します。バックアップ要求が送信された後、コマンドを使用してバックアップのステータスを表示できます。 STATUS 列が Completed に変わると、バックアップは完了です。
- ➜ ~ velero バックアップを取得
- 名前ステータス エラー 警告 作成日 有効期限 保存場所 セレクター
- mysql-backup 完了 0 0 2021-09-16 16:58:51 +0800 CST 29dデフォルト<なし>
- ➜ ~ velero バックアップ mysql-backup について説明する
- 名前: mysql-backup
- 名前空間: velero
- ラベル: velero.io/storage-location= default
- 注釈: velero.io/source-cluster-k8s-gitversion=v1.18.4-tke.6
- velero.io/source-cluster-k8s-major-version=1
- velero.io/source-cluster-k8s-minor-version=18+
-
- フェーズ: 完了
-
- エラー: 0
- 警告: 0
-
- 名前空間:
- 含まれるもの: kube-demo
- 除外: <なし>
-
- リソース:
- 含まれるもの: *
- 除外: <なし>
- クラスタースコープ: 自動
-
- ラベルセレクター: <なし>
-
- 保存場所:デフォルト
-
- Velero ネイティブ スナップショット PV: 自動
-
- TTL: 720h0m0s
-
- フック: <なし>
-
- バックアップフォーマットバージョン: 1.1.0
-
- 開始: 2021-09-16 16:58:51 +0800 CST
- 完了: 2021-09-16 16:59:08 +0800 CST
-
- 有効期限: 2021-10-16 16:58:51 +0800 CST
-
- バックアップするアイテムの合計数: 30
- バックアップされたアイテム: 30
-
- Velero ネイティブ スナップショット: <含まれないもの>
-
- Restic バックアップ (
- 完了: 1
バックアップが完了したら、minio バケットに移動して、対応するバックアップ データがあるかどうかを確認できます。 ここで、アプリケーションが配置されている名前空間を削除して、運用環境での災害や運用および保守エラーによってアプリケーションが失敗するシナリオをシミュレートします。 - ➜ ~ kubectl名前空間の削除kube-demo
現時点では、MySQL データベースにアクセスすることはできません。現時点では、velero を使用して、1 つのコマンドで minio からアプリケーションとデータを復元できます。 - ➜ ~ velero 復元作成
- 復元リクエスト「mysql-backup-20210916172100」が正常に送信されました。
- 詳細については、 「velero restore describe mysql-backup-20210916172100」または「velero restore logs mysql-backup-20210916172100」を実行してください。
velero restore get を使用して復元の進行状況を表示することもできます。 STATUS 列が Completed に変わると、復元は完了です。
- ➜ ~ velero 復元 取得
- 名前バックアップ ステータス 開始 完了 エラー 警告 作成 セレクタ
- mysql-backup-20210916172100 mysql-backup 完了 2021-09-16 17:21:00 +0800 CST 2021-09-16 17:21:22 +0800 CST 0 0 2021-09-16 17:21:00 +0800 CST <なし>
- ➜ ~ velero 復元は mysql-backup-20210916172100 を記述します
- 名前: mysql-backup-20210916172100
- 名前空間: velero
- ラベル: <なし>
- 注釈: <なし>
-
- フェーズ: 完了
- 復元するアイテムの合計数: 10
- 復元されたアイテム: 10
-
- 開始: 2021-09-16 17:21:00 +0800 CST
- 完了: 2021-09-16 17:21:22 +0800 CST
-
- バックアップ: mysql-backup
-
- 名前空間:
- 含まれるもの:バックアップで見つかったすべての名前空間
- 除外: <なし>
-
- リソース:
- 含まれるもの: *
- 除外: ノード、イベント、events.events.k8s.io、backups.velero.io、restores.velero.io、resticrepositories.velero.io
- クラスタースコープ: 自動
-
- 名前空間マッピング: <なし>
-
- ラベルセレクター: <なし>
-
- PVの復元: 自動
-
- Restic 復元 (
- 完了: 1
-
- サービス NodePorts を保持: 自動
復元が完了したら、kube-demo 名前空間のアプリケーション データが正しいかどうかを確認します。 - ➜ ~ kubectl get ns kube-demo
- 名前ステータス 年齢
- kube-demo アクティブ 3分29秒
- ➜ ~ kubectl ポッドを取得 -n kube-demo
- 名前準備完了 ステータス 再起動 年齢
- mysql-c57f676dd-gw5pf 1/1 実行中 0 6分28秒
- ➜ ~ kubectl exec -it -n kube-demo mysql-c57f676dd-gw5pf
- ルート@mysql-c57f676dd-gw5pf:/# mysql -uroot -p
- パスワードを入力してください:
- MySQL モニターへようこそ。コマンド終了 と;または\g。
- MySQL接続IDは42です
- サーバーバージョン: 5.6.51 MySQL コミュニティサーバー (GPL)
-
- Copyright (c) 2000、2021、Oracleおよび/またはその関連会社。無断転載を禁じます。
-
- OracleはOracle Corporationおよび/またはその関連会社の登録商標です。
- 関連会社。その他の名称は、それぞれの商標である可能性があります。
- 所有者。
-
- 「help;」と入力します または '\h' 助けを求めて。 '\c'と入力 現在の入力ステートメントをクリアします。
-
- mysql> データベースを表示します。
- +
- |データベース|
- +
- |情報スキーマ |
- | #mysql50#紛失+発見 |
- |mysql |
- |パフォーマンススキーマ |
- |ベレロ |
- +
- 5行 で 設定(0.00 秒)
-
- マイSQL>
作成した velero データベースがまだ存在しており、完全に復元されたことがわかります。 各 Velero インスタンスが同じオブジェクト ストレージを指している限り、Velero は 1 つのクラスターから別のクラスターにリソースを移行できます。さらに、スケジュールされたバックアップ、バックアップ フックのトリガー、その他の操作もサポートします。詳細については、公式ドキュメントを参照してください: https://velero.io/docs/ |