スケジュールバックアップまたは即時バックアップにより、Container Service for Kubernetes (ACK) アプリケーションを偶発的な削除、クラスターの障害、または破損から保護します。
ユースケース
-
災害復旧:偶発的な削除、クラスターの障害、またはデータの破損が発生した場合に、アプリケーションとボリュームを復旧します。
-
クラスターの移行:Kubernetes のバージョンやボリュームプラグインが異なるクラスターへアプリケーションを移行します。
制限事項
-
バックアップ中に削除されるリソースは除外されます。
-
Kubernetes 1.16 以降が必要です。詳細については、「ACK クラスターの手動アップグレード」をご参照ください。
-
ディスクスナップショットバックアップには、Kubernetes 1.18 以降と Container Storage Interface (CSI) が必要です。それ以外の場合は、Cloud Backup を使用してください。
前提条件
開始する前に、以下を完了してください:
-
migrate-controller がインストールされており、必要な権限が付与されています。
-
(ディスクスナップショットバックアップの場合) CSI プラグイン 1.1.0 以降がインストールされています。
-
(CNFS によって管理される NAS ボリュームに復元する場合) alibabacloud-cnfs-nas を持つストレージクラスが作成されています。
課金
バックアップセンターは無料です。関連サービスは使用量に基づいて課金されます:
-
Object Storage Service (OSS):バックアップの YAML ファイルを保存します。詳細については、「OSS の課金」をご参照ください。
-
スナップショット:ディスクボリュームをバックアップします。詳細については、「スナップショットの課金」をご参照ください。
2023年10月12日 11:00 (UTC+8) より、高速スナップショット機能のストレージ料金と機能使用料は課金されなくなりました。詳細については、「高速スナップショット機能の使用」をご参照ください。PL0 ESSD、PL1 ESSD、PL2 ESSD、PL3 ESSD、および ESSD AutoPL ディスクのバックアップ中に作成されたスナップショットでは、高速スナップショット機能がデフォルトで有効になります。
-
Cloud Backup:ディスク以外のボリュームをバックアップします。詳細については、「Cloud Backup の料金詳細」をご参照ください。
ステップ 1:バックアップボールトの作成
バックアップは、ボールトにリンクされた OSS バケットに保存されます。リージョンごとに 1 つのボールトを作成し、そのリージョン内のすべての ACK クラスターがそれを共有します。
ボールトは作成後に更新できず、削除のみ可能です。削除済みのボールトと同じ名前でボールトを再作成した場合、以前のバックアップを使用していたクラスターは、その新しいボールトを使用できません。
-
ACK コンソールにログインします。左側メニューで、[マルチクラスター] > [バックアップセンター] を選択します。
-
[バックアップセンター] ページで、[バックアップボールトの作成] をクリックします。
-
[バックアップボールトの作成] パネルで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 [ボールト名] 小文字と数字のみ使用できます。 [OSS バケットリージョン] OSS バケットがデプロイされているリージョン。 [OSS バケット名] OSS バケットの名前。ACK マネージドクラスターの場合、事前にバケットを作成し、[cnfs-oss****] 形式の名前にします。 [OSS バケットサブディレクトリ] (オプション) バケット内のサブディレクトリ。 [可視範囲] このバックアップボールトを閲覧可能なユーザー:[Alibaba Cloud アカウントと作成者のみ]、または [Alibaba Cloud アカウントと RAM ユーザー]。
ステップ 2:バックアッププランの作成または即時バックアップの実行
バックアップセンターには2つのモードがあります:
-
[バックアッププラン]:プランを削除するまで、定期的なスケジュール (毎日、毎週、または毎月) でバックアップを実行します。
-
[即時バックアップ]:一度限りのバックアップをすぐに実行します。
どちらのモードでも、クラスターにバックアップタスクが作成されます。ステータスは [バックアップ履歴] タブで確認できます。
バックアッププランの作成
-
[クラスター] ページで、クラスター名をクリックします。左側メニューで、[オペレーション] > [アプリケーションバックアップ] を選択します。プロンプトが表示された場合は、バックアップサービスコンポーネントをインストールします。登録済みおよび専用クラスターの場合は、権限も設定します。
-
[アプリケーションバックアップ] ページで、[バックアッププランの作成] をクリックします。[バックアッププランの作成] パネルで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 [名前] (必須) バックアッププランの名前。 [バックアップボールト] (必須) バックアップを保存するボールト。 [バックアップタイプ] [アプリケーションバックアップ]:クラスターリソースとアプリケーションボリュームをバックアップします。[データ保護]:ボリュームデータ (PVC と PV) のみをバックアップします。詳細については、「アプリケーションバックアップとデータ保護のシナリオとは?」をご参照ください。 [Namespace の選択] [含める]:[バックアップ対象の Namespace] の Namespace のみをバックアップします。[除外]:指定された Namespace を除くすべてをバックアップします。新しい Namespace は自動的に含められます。バックアッププランでのみ利用可能です。即時バックアップはデフォルトで [含める] になります。 [バックアップ対象の Namespace] (必須) バックアップする 1 つ以上の Namespace。次のシステム Namespace はバックアップできません: kube-system、kube-publish、kube-node-lease、およびcsdr。[バックアップボリューム] [アプリケーションバックアップ]の場合:[マウントされたボリューム] は ECS スナップショット (ディスクボリューム) または Cloud Backup (その他のタイプ) にバックアップします。[無効化] はボリュームデータをスキップし、YAML のみを復元します。[データ保護]の場合:[すべてのボリューム]、[指定されたタイプのボリューム]、または [指定されたボリューム] (PVC による)。詳細については、「アプリケーションバックアップでボリュームをバックアップする必要があるシナリオとは?」をご参照ください。 [ストレージ] [バックアップタイプ] が [データ保護] で、[バックアップボリューム] が [指定されたタイプのボリューム] の場合に設定します。バックアップするボリュームのタイプを指定します。 [PersistentVolumeClaim] [バックアップタイプ] が [データ保護] で、[バックアップボリューム] が [指定されたボリューム] の場合に設定します。バックアップする PVC を指定します。 [バックアップサイクル] (バックアッププランで必須) crontab 式または間隔。例: 0 2 * * *は毎日午前 2:00 に実行されます。詳細については、「バックアッププラン作成時にバックアップサイクルを指定するにはどうすればよいですか?」をご参照ください。詳細設定
パラメーター 説明 [指定されたラベル] このラベルを持つアプリケーションのみをバックアップします。プランごとに 1 つのラベル。 [指定されたリソース] 含める Kubernetes リソースタイプをカンマ区切りで指定します。例: Deployment, ConfigMap。[除外するリソース] 除外する Kubernetes リソースタイプをカンマ区切りで指定します。例: Pod, Secret。[有効期間] バックアップが期限切れになるまでの保持期間。範囲:1~65,536 日。期限切れのバックアップは復元できません。 -
[バックアッププラン] タブで、[操作] 列の [バックアップ履歴の表示] をクリックします。ステータスが[「Completed」]と表示されていれば成功です。Namespace またはサイクルを変更するには、[操作] 列の [編集] をクリックします。
即時バックアップの実行
-
[クラスター] ページで、クラスター名をクリックします。左側メニューで、[オペレーション] > [アプリケーションバックアップ] を選択します。プロンプトが表示された場合は、バックアップサービスコンポーネントをインストールします。登録済みおよび専用クラスターの場合は、権限も設定します。
-
[アプリケーションバックアップ] ページで、[即時バックアップ] をクリックします。[即時バックアップ] パネルで、次のパラメーターを設定し、[OK] をクリックします。[詳細設定]:バックアッププランと同じです (指定されたラベル、指定されたリソース、除外するリソース、有効期間)。
パラメーター 説明 [名前] (必須) 即時バックアップタスクの名前。 [バックアップボールト] (必須) バックアップを保存するボールト。 [バックアップタイプ] [アプリケーションバックアップ]または[データ保護]。詳細については、上記のバックアッププランの表をご参照ください。 [バックアップ対象の Namespace] (必須) バックアップする 1 つ以上の Namespace。 kube-system、kube-publish、kube-node-lease、およびcsdrの Namespace はバックアップできません。[バックアップボリューム] バックアッププランと同じオプション。 [ストレージ] [バックアップタイプ] が [データ保護] で、[バックアップボリューム] が [指定されたタイプのボリューム] の場合に設定します。 [PersistentVolumeClaim] [バックアップタイプ] が [データ保護] で、[バックアップボリューム] が [指定されたボリューム] の場合に設定します。 -
[バックアップ履歴] タブで、[ステータス] 列を確認します。ステータスが[「Completed」]と表示されていれば成功です。バックアップ履歴からタスクを作成するには、[操作] 列の [クローン] をクリックします。
ステップ 3:アプリケーションとボリュームの復元
復元では、ターゲットクラスターに存在しないリソースのみが作成され、上書きは行われません。復元する前に、競合するリソースを削除してください。
-
[アプリケーションバックアップ] ページで、[即時復元] をクリックします。
-
[即時復元] パネルで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 [名前] 小文字と数字のみ使用できます。 [バックアップボールト] バックアップが含まれるボールトを選択します。[バックアップボールトの初期化] をクリックしてクラスターを関連付け (一度限りの設定)、バックアップファイルを選択します。 [バックアップの選択] 復元するバックアップファイル。 [復元対象の Namespace] 復元する Namespace。すべてを復元する場合、またはバックアップにクラスターレベルのリソースが含まれる場合は、空白のままにします。 [Namespace のリセット] 復元中に Namespace を再マッピングします。[追加] をクリックし、ソースを選択して、 :の後にターゲットを指定します。例:old-namespace:new-namespace。[イメージリポジトリのリセット] コンテナーイメージレジストリを置き換えます。[追加] をクリックし、現在のアドレスと置き換え後のアドレスを、 :で区切って入力します。例:docker.io/library:registry.cn-hangzhou.aliyuncs.com/xxx。[StorageClass 変換] 復元中に PVC のストレージクラスを変換します。例: alicloud-diskを選択して NAS ボリュームをディスクに変換します。FileSystem タイプのボリューム (Cloud Backup によってバックアップされた非ディスクボリューム) のみ変換できます。ReadWriteMany ボリュームはディスクに変換できません。ReadOnlyMany ボリュームの場合、変換前にレプリカが複数のノードにマウントされていないことを確認してください。
復元の検証
復元後、アプリケーション、ボリューム、および Service が正しく動作していることを確認します。
-
復元されたクラスターの左側メニューで、[ワークロード] > [Deployment] を選択します。アプリケーションを見つけ、[操作] 列の [詳細] をクリックします。[Pod] タブで、ステータスが [「Running」] と表示されていることを確認します。
-
[ボリューム] > [PersistentVolumeClaim] を選択します。復元された PVC が一覧に表示されることを確認します。
-
[ネットワーク] > [Service] を選択します。Service の外部エンドポイントをクリックして、アクセス可能であることを確認します。
次のステップ
-
ボリュームプラグインやKubernetesのバージョンが異なるクラスター間でアプリケーションを移行する:バックアップセンターを使用して、古い Kubernetes バージョンを実行している ACK クラスター内のアプリケーションを移行する
-
同一リージョン内での移行:同一リージョン内のクラスター間でアプリケーションを移行する
-
リージョン間移行:異なるリージョンのクラスター間でアプリケーションを移行する
-
kubectl を使用したアプリケーションのバックアップと復元:kubectl を使用してアプリケーションをバックアップおよび復元する