オープンソースの詳細については、以下をご覧ください。 51CTO オープンソース基本ソフトウェアコミュニティ https://ost..com 導入Velero は、Kubernetes クラスター リソースと永続ボリュームを安全にバックアップ、復元、移行できるバックアップおよびリカバリ ソフトウェアです。 Velero の Kubernetes リソース バックアップ機能を使用すると、Kubernetes クラスター データのバックアップとリカバリを簡単に実現したり、Kubernetes クラスター リソースを他の Kubernetes クラスターにコピーしたり、実稼働環境をテスト環境にすばやくコピーしたりできます。このタイプのバックアップは、リソースの yaml ファイル全体をバックアップするのと似ており、リソースの整合性が確保されます。 Velero はストレージのサポートが優れており、AWS S3、Azure Blob、Google Cloud Storage、Alibaba Cloud OSS、Swift、MinIO など、さまざまな種類のストレージ リソースをサポートできます。 ストレージサポート。 フローチャート 注: このドキュメントでは、バックエンド ストレージとして MinIO を使用します。 DockerでMinIOをデプロイするクラスターに問題が発生した場合にバックアップが影響を受けないように、ストレージとクラスターの分離を確保する必要があるため、MinIO は他のサーバーにデプロイされ、Kubernetes 環境から分離されます。予期しない状況によりシステムがダウンした場合のさらなる影響を回避します。 mkdir -pv /data/{minio,config} docker pull minio/minio docker pull minio/mc:最新
docker run -d -p 9000 :9000 -p 9090 :9090 --name = minio --restart = always -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin123456" -v /data/minio:/data -v /data/config:/root/.minio minio/minio server /data --console -address ":9090" --address ":9000"
docker run -it --entrypoint = /bin/sh -v /data/config:/root/.minio minio/mc
mc config ホスト velero を追加します http://127.0.0.1:9000 管理者 admin123456 --api S3v4 mc mb -pベレロ/ベレロ mc はコンソール インターフェイス ポートではなく API ポートを使用するため、認証時に mc は API ポートを使用する必要があることに注意してください。 その後、ブラウザは設定されたアカウントとパスワードを使用してログインできます。
k8sマスターにveleroをインストールするvelero をダウンロード: https://github.com/vmware-tanzu/velero/releases/download/v1.9.0/velero-v1.9.0-linux-amd64.tar.gz。 1. キーを作成し、veleroをインストールする cat > 資格情報-velero <<EOF [デフォルト] aws_access_key_id = 管理者 aws_secret_access_key = admin123456 終了
cp velero /usr/local/bin/ echo 'source <(velero 補完 bash)' >> /etc/profile && source /etc/profile 2. K8s クラスターに velero をインストールする velero インストール \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.2.1 \ --バケットベレロ\ --secret -file ./credentials-velero \ --use -volume -snapshots = false \ --backup -location -config リージョン= minio 、s3ForcePathStyle = "true" 、s3Url = http://10.0.2.196:9000 インストール中に生成されたログ。 CustomResourceDefinition/backups.velero.io: リソースを作成しようとしています CustomResourceDefinition/backups.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/backups.velero.io: 作成されました CustomResourceDefinition/backupstoragelocations.velero.io: リソースを作成しようとしています CustomResourceDefinition/backupstoragelocations.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/backupstoragelocations.velero.io: 作成されました CustomResourceDefinition/deletebackuprequests.velero.io: リソースを作成しようとしています CustomResourceDefinition/deletebackuprequests.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/deletebackuprequests.velero.io: 作成されました CustomResourceDefinition/downloadrequests.velero.io: リソースを作成しようとしています CustomResourceDefinition/downloadrequests.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/downloadrequests.velero.io: 作成されました CustomResourceDefinition/podvolumebackups.velero.io: リソースを作成しようとしています CustomResourceDefinition/podvolumebackups.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/podvolumebackups.velero.io: 作成されました CustomResourceDefinition/podvolumerestores.velero.io: リソースを作成しようとしています CustomResourceDefinition/podvolumerestores.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/podvolumerestores.velero.io: 作成されました CustomResourceDefinition/resticrepositories.velero.io: リソースを作成しようとしています CustomResourceDefinition/resticrepositories.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/resticrepositories.velero.io: 作成されました CustomResourceDefinition/restores.velero.io: リソースを作成しようとしています CustomResourceDefinition/restores.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/restores.velero.io: 作成されました CustomResourceDefinition/schedules.velero.io: リソースを作成しようとしています CustomResourceDefinition/schedules.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/schedules.velero.io: 作成されました CustomResourceDefinition/serverstatusrequests.velero.io: リソースを作成しようとしています CustomResourceDefinition/serverstatusrequests.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/serverstatusrequests.velero.io: 作成されました CustomResourceDefinition/volumesnapshotlocations.velero.io: リソースを作成しようとしています CustomResourceDefinition/volumesnapshotlocations.velero.io: リソースクライアントを作成しようとしています CustomResourceDefinition/volumesnapshotlocations.velero.io: 作成されました クラスター内のリソースの準備が整うのを待っています... 名前空間/velero: リソースを作成しようとしています 名前空間/velero: リソースクライアントを作成しようとしています 名前空間/velero: 作成 ClusterRoleBinding/velero: リソースを作成しようとしています ClusterRoleBinding/velero: リソース クライアントを作成しようとしています ClusterRoleBinding/velero: 作成されました ServiceAccount/velero: リソースを作成しようとしています ServiceAccount/velero: リソースクライアントを作成しようとしています ServiceAccount/velero: 作成されました シークレット/クラウド認証情報: リソースを作成しようとしています シークレット/クラウド認証情報: リソースクライアントを作成しようとしています シークレット/クラウド認証情報: 作成済み BackupStorageLocation/default: リソースを作成しようとしています BackupStorageLocation/default: リソースクライアントを作成しようとしています BackupStorageLocation/default: 作成済み デプロイメント/velero: リソースを作成しようとしています デプロイメント/velero: リソースクライアントを作成しようとしています デプロイメント/velero: 作成 Veleroがインストールされました! ⛵ ステータスを表示するには、 「kubectl logs deployment/velero -n velero」を使用します。 インストールが完了したことを確認します。 [root@master ~] 名前 準備完了 ステータス 再起動 年齢 velero-cf79784ff-zdfp9 1 /1 実行中0 47秒 [root@master ~] velero.io/v1 3. velero コマンド velero バックアップ NAME [フラグ] を作成
--exclude -namespaces stringArray バックアップから除外する名前空間
--exclude -resources stringArray バックアップから除外するリソース。resource.group の形式で指定します (例: storageclasses.storage.k8s.io) --include -cluster -resourcesオプションのBool[ = true ] バックアップにクラスタースコープのリソースを含める
--include -namespaces stringArray バックアップに含める名前空間 (すべての名前空間には'*'を使用) (デフォルトは *) --include -resources stringArray バックアップに含めるリソース。resource.group 形式で指定します (例: storageclasses.storage.k8s.io) (すべてのリソースには'*'を使用します) --labels mapStringString バックアップに適用するラベル -o , --output string 出力表示形式。作成コマンドの場合、オブジェクトを表示しますが、サーバーに送信しません。有効な形式は'table' 、 'json' 、および'yaml'です。 'table' はインストール コマンドでは無効です。 -l , --selector labelSelector このラベルセレクターに一致するリソースのみをバックアップします (デフォルトは <なし>) --snapshot -volumesオプションのBool[ = true ] バックアップの一部としてPersistentVolumeのスナップショットを取得します
--storage -location string バックアップを保存する場所
--ttl期間 バックアップがガベージコレクションされるまでの時間 (デフォルト 720h0m0s) --volume -snapshot -locations文字列 ボリュームスナップショットを保存する場所のリスト(プロバイダーごとに最大 1 つ) 4. テストVelero にはインストール パッケージにテスト デモが含まれており、テスト デモを使用してテスト検証を実行できます。 [root@master ~] [root@master nginx-app] base.yaml README.md with-pv.yaml ストレージクラス名: longhorn タイプ: ClusterIP [root@master nginx-app] 名前空間/nginx-example が作成されました persistentvolumeclaim/nginx-logs が作成されました デプロイメント.apps/nginx-deployment が作成されました サービス/my-nginx が作成されました [root@master nginx-app] 名前 タイプ クラスター IP 外部 IP ポート 年齢 my-nginx ClusterIP 10 .108.189.178 <なし> 80 /TCP 79s [root@master nginx-app] 名前 準備完了 ステータス 再起動 年齢 pod/nginx-deployment-6779884c68-4nv2s 2 /2 実行中0 2分16秒
名前 タイプ クラスター IP 外部 IP ポート 年齢 サービス/my-nginx ClusterIP 10 .108.189.178 <なし> 80 /TCP 2分16秒
名前 準備完了 最新 利用可能 年齢 デプロイメント.apps/nginx-デプロイメント1 /1 1 1 2分16秒
名前 希望 現在の年齢 レプリカセット.apps/nginx-deployment-6779884c68 1 1 1 2分16秒 5. バックアップ [root@master nginx-app] バックアップ要求「nginx-backup」が正常に送信されました。 詳細については、`velero backup describe nginx-backup`または`velero backup logs nginx-backup`を実行してください。 [root@master nginx-app] 名前: nginx-backup 名前空間: velero ラベル: velero.io /storage-location = default 注釈: velero.io /source-cluster-k8s-gitversion = v1.23.5 velero.io/source-cluster-k8s-major-version=1 velero.io/source-cluster-k8s-minor-version=23 フェーズ: 失敗 (詳細については`velero backup logs nginx-backup`を実行してください) エラー: 0 警告: 0 名前空間: 含まれるもの: nginx-example 除外: <なし> リソース: 含まれるもの: * 除外: <なし> クラスタースコープ: 自動 ラベルセレクター: <なし> 保存場所: デフォルト Velero ネイティブ スナップショット PV: 自動 TTL: 720h0m0s フック: <なし> バックアップフォーマットバージョン: 1.1.0 開始日時: 2022-06-30 17:44:49 + 0800 CST 完了: 2022-06-30 17:44:49 + 0800 CST 有効期限: 2022-07-30 17:44:49 + 0800 CST Velero ネイティブ スナップショット: <含まれないもの> [root@master nginx-app] エラーが発生しました: gzip: 無効なヘッダー バックアップ レコードを表示するには、minio にログインします。 6. 回復テストnginx-appを削除します: [root@master velero-v1.9.0-linux-amd64] nginxを復元します: [root@master velero-v1.9.0-linux-amd64]# velero 復元作成 --from-backup nginx-backup --wait 復元リクエスト「nginx-backup-20220630192521」が正常に送信されました。 復元が完了するのを待っています。待機を停止するには、Ctrl + C を安全に押してください。復元はバックグラウンドで続行されます。
復元が完了しました。ステータス: 完了。 `velero restore describe nginx-backup-20220630192521` コマンドと `velero restore logs nginx-backup-20220630192521` コマンドを使用して、詳細情報を確認できます。 [root@master velero-v1.9.0-linux-amd64] 名前 準備完了 ステータス 再起動 年齢 nginx-deployment-6779884c68-4nv2s 2 /2 実行中0 27秒 復元すると新しい復元が作成されます。 目次 注: velero restore は既存のリソースを上書きせず、現在のクラスターに存在しないリソースのみを復元します。既存のリソースは以前のバージョンにロールバックされません。ロールバックが必要な場合は、復元する前に既存のリソースを事前に削除する必要があります。 すべての名前空間をバックアップします。 velero バックアップ ログ k8s-all 7. スケジュールバックアップ常に完全かつ最新のバックアップ状態を確保するために、スケジュールされた完全バックアップを実行することをお勧めします。 velero はスケジュール k8s-all を作成します--schedule = "0 0 * * *" バックアップを表示: velero バックアップを取得 #バックアップビュー velero get schedule #スケジュールされたバックアップを表示 velero get restore #既存の復元を表示 velero プラグインを取得 #プラグインを表示 オープンソースの詳細については、以下をご覧ください。 51CTO オープンソース基本ソフトウェアコミュニティ https://ost..com. |