AKS のバックアップと回復
バックアップと回復は、組織の運用およびディザスター リカバリー戦略の不可欠な部分です。 バックアップと回復の計画は、通常、データとアプリケーションを別のセカンダリ デバイスまたはサービスに定期的にコピーする方法に基づく、さまざまなテクノロジとプラクティスに依存します。 システム障害、データ損失、または障害が発生した場合、これらのコピーは、データとアプリケーション、およびそれらが依存する事業運営を回復するために使用されます。
Azure Kubernetes Service (AKS) Day-2 Operations ガイドのこのセクションでは、AKS のバックアップと回復のプラクティスについて説明します。
AKS クラスターのバックアップが重要な理由
クラウドネイティブ デプロイと Kubernetes の導入が拡大し続けるにつれて、Kubernetes クラスターとワークロードを包括的なバックアップと回復戦略に含める必要が組織にとってますます重要になります。
AKS でバックアップと回復を実装すると、次のことができます。
- 元に戻せないシステム障害、データ損失、または障害が発生した場合に使用するために、AKS クラスターから構成とデータのセカンダリ コピーを作成します。
- ある AKS クラスターから別の AKS クラスターに Kubernetes リソースとアプリケーション データをコピーします。
- AKS クラスターをレプリケートして、他の環境を作成します。
- AKS バージョンのアップグレードなどの運用をメンテナンスする前に、ワークロードのスナップショットを実行します。
- 規制または組織のコンプライアンスを維持するため、データ保護要件に準拠します。
- 最近のデプロイまたは変更に関する問題が検出された場合は、以前のデプロイにすばやくロールバックします。
バックアップは問題が発生した場合にワークロードを復元するのに役立ちますが、高可用性 (HA) は提供されません。
AKS でのリージョン内の高可用性とリージョン間のディザスター リカバリーに関しては、次のような他のいくつかのオプションを検討できます。
- 可用性ゾーン: AKS は、Azure リージョン内の物理的に分離されたデータ センターである可用性ゾーンの使用をサポートします。 複数の可用性ゾーンに AKS クラスターをデプロイすることで、リージョン内の回復性とフォールト トレランスを高めることができます。 これにより、1 つのゾーンで障害が発生した場合でもアプリケーションを運用状態に保つことができます。
- 永続ボリュームの冗長性オプション: AKS では、永続ボリュームに対してさまざまな冗長性オプションが提供されます。 Kubernetes 用 Azure Disk CSI ドライバーでは、リージョン内の回復性を向上させるためにローカル冗長ストレージ (LRS) またはゾーン冗長ストレージ (ZRS) を使用する組み込みのストレージ クラスとカスタム ストレージ クラスがサポートされています。 詳しくは、「ドライバー パラメーター」をご覧ください。
- Azure Kubernetes Fleet Manager: Azure Kubernetes Fleet Manager では、AKS クラスターのマルチクラスターと大規模なリージョン内およびリージョン間のシナリオを有効にすることができます。
- Azure Container Registry (ACR) の geo 冗長オプション: Azure Container Registry (ACR) には geo レプリケーション機能が用意されています。 geo 冗長性により、コンテナー イメージはさまざまな Azure リージョンにレプリケートされます。 そのため、特定のリージョンで障害が発生した場合でも、イメージを使用できるため、コンテナー レジストリの可用性が向上します。
また、コードとしてのインフラストラクチャ (IaC)、Azure Pipelines、GitOps、Flux などの手法を使用して、障害が発生した場合にワークロードをすばやく再デプロイすることもできます。
これらの手法の詳細については、次の記事を参照してください。
- Azure Pipelines を使用したビルドと Azure Kubernetes Service へのデプロイ
- チュートリアル: GitOps with Flux v2 を使ってアプリケーションをデプロイする
- ARM テンプレートの構造と構文の詳細
- Bicep とは
- Azure 上の Terraform の概要 - Terraform とは
バックアップ対象
AKS および Kubernetes クラスターの一般的なバックアップと回復を検討するときは、復元を成功させるために、バックアップに含める必要があるコンポーネントを正確に特定することが重要です。 主に、これらの重要なコンポーネントは次で構成されます。
クラスターの状態: クラスター内のすべての Kubernetes オブジェクトの現在および必要な構成または状態を参照します。 これには、デプロイ、ポッド、サービスなど、さまざまなオブジェクトが含まれます。 クラスターの状態は、AKS などのマネージド クラスターの場合と同様に、API サーバーからのみアクセスできる高可用性 etcd キーと値のペア データベースに格納されます。 クラスターの状態は宣言型で定義され、YAML マニフェストなど、クラスターに適用されるすべての Kubernetes 構成ファイルの結果です。
アプリケーション データ: クラスター内で実行されているコンテナ化されたワークロードによって作成、管理、またはアクセスされるデータを参照します。 ポッドまたはコンテナーの再起動間でデータの永続化を確保するために、Kubernetes では、アプリケーション データを永続ボリュームに格納することをお勧めします。 これらのボリュームは、静的または動的に作成でき、さまざまな種類の永続記憶装置によってサポートされ、データ ストレージと管理要件に対する柔軟性とスケーラビリティを提供します。
クラスターの完全バックアップでは、クラスターの状態とアプリケーション データの両方を 1 つのユニットとして含める必要がありますが、各バックアップの最適なスコープの決定は、さまざまな要因によって異なります。 たとえば、継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインなどの代替ソースが存在すると、クラスターの状態を簡単に回復できる場合があります。 さらに、アプリケーション データのサイズは、ストレージ コストと、バックアップと回復の操作に必要な時間に影響します。
理想的なバックアップと回復の戦略は、特定のアプリケーションと環境によって大きく異なります。 そのため、バックアップのスコープは、ケース バイ ケースで評価する必要があります。 また、クラスターの状態の重要性やアプリケーション データの量などの要因も考慮する必要があります。
個々のクラスター ノード (VM) やローカル のファイルシステムやボリュームなどその他のコンポーネントをターゲットにすることは、通常、サーバー ベースシステムの従来のバックアップと回復計画に含まれていますが、Kubernetes には関係ありません。 関連する状態とデータは、従来のシステムと同じ方法で個々のノードまたはローカル ファイルシステムに保持されません。
AKS のバックアップと回復のオプションの概要
従来のモノリシック アプリケーションと Kubernetes クラスターで実行されているワークロードには顕著な違いがあり、バックアップと回復にはいくつかの課題があります。 Kubernetes ワークロードは、複数の基になるリソースとサービスでサポートされる外部永続ボリューム間でデータが保持され、非常に動的で分散されるように意図的に設計されています。
Kubernetes 環境を効果的にサポートするには、バックアップと回復のソリューションに Kubernetes とアプリケーションの認識が必要です。 レガシ あるいは従来のバックアップおよび回復ツールでは多くの場合見つからない、ある程度の自動化、信頼性、統合を提供する必要があります。
オープン ソースからクローズド ソースまで、さまざまなライセンス モデルを提供するオプションを備えた、さまざまな Kubernetes ネイティブのバックアップおよび回復ソリューションを利用できます。
AKS で使用できるバックアップおよび回復ソリューションの例を次に示します。 注目すべき例の 1 つは、Azure Kubernetes Service (AKS) Backup と呼ばれる Microsoft のフル マネージドファースト パーティ ソリューションです。これは、AKS クラスターとそのワークロードのバックアップと回復用に設計された Azure 統合サービスを提供します。 この一覧は完全なものではなく、いくつかの使用可能なオプションのみを提供します。
AKS Backup
AKS Backup は、AKS クラスターをバックアップおよび復元するための Azure のオファリングです。 これは、AKS クラスターで実行されているコンテナ化されたアプリケーションとデータをバックアップおよび回復できる、シンプルな Azure ネイティブ プロセスです。
AKS Backup を使用すると、Azure ディスク ベースの永続ボリュームに格納されている完全またはきめ細かいクラスター状態とアプリケーション データのオンデマンド バックアップまたはスケジュールされたバックアップが可能になります。 Azure Backup Center と統合され、大規模なバックアップの管理、監視、運用、分析に役立つ 1 つの領域が Azure portal に提供されます。
AKS Backup のしくみとその機能の詳細については、「Azure Backup を使用した AKS バックアップについて」を参照してください。
Kasten
Kasten は商品であり、運用チームに Kubernetes アプリケーションのバックアップと回復のための使いやすく安全なシステムを提供します。 機能が制限され、サポートされていない無料版と、より多くの機能とカスタマー サポートを含む有料版の両方で利用できます。
クラスター内に Kubernetes オペレーターとして Kasten をデプロイすると、包括的なバックアップ ソリューションが提供されます。 一元的な管理と可視性のための管理ダッシュボードを提供します。 Kasten を使用すると、ユーザーは増分バックアップとアプリケーション対応バックアップを利用して、効率的なデータ保護を実現できます。 さらに、Kasten にはディザスター リカバリー機能が用意されています。 これらの機能には、自動フェールオーバーとフェールバック、データ移行とセキュリティの確保のための機能が含まれます。
Kasten の機能セットの詳細については、Kasten K10 のドキュメントを参照してください。 AKS クラスターで Kasten を効果的に使用する方法については、「Azure への K10 のインストール」を参照してください。
Velero
Velero は、Kubernetes 用の広く使用されているオープンソースのバックアップおよび回復ツールです。 すべてのユーザーが無料で無制限のバージョンを利用でき、プロジェクト共同作成者のコミュニティによってサポートとメインテナントが提供されます。
Velero はクラスター内のデプロイとして実行され、アプリケーションのバックアップ、回復、およびデータ移行のための包括的な機能セットを提供します。 ダッシュボードはすぐに使用することはできませんが、外部統合を使用して追加できます。
機能セットの詳細と、それを AKS クラスターと統合する方法については、Velero のドキュメントを参照してください。
AKS Backup のインストールと構成
AKS Backup をインストールおよび構成するには、次の手順に従います。
- AKS クラスターで AKS Backup を使用するための前提条件の詳細については、「Azure Backup を使用した AKS Backup の前提条件」を参照してください。
- AKS Backup の リージョンの可用性、サポートされているシナリオ、制限事項の詳細については、「AKS Backup のサポート マトリックス」を確認してください。
- サブスクリプションに必要なリソース プロバイダーを登録し、これらの登録を管理する方法については、「Azure Backup を使用した AKS バックアップの管理」を参照してください。
- AKS Backup を使用して AKS クラスターのバックアップと回復を設定する方法の詳細については、「Azure Backup を使用した AKS のバックアップ」を参照してください。 手順には、バックアップ コンテナー、バックアップ ポリシー、バックアップ インスタンスなど、必要なすべての Azure リソースの作成と構成が含まれます。
- 既存の Backup インスタンスから AKS クラスターの完全または項目レベルの回復を実行する方法の詳細については、「Azure Backup を使用した AKS の復元」を参照してください。
AKS でのバックアップの頻度と保持: バックアップ ポリシーの定義
バックアップの頻度と保持期間の決定は、バックアップと回復のソリューションの基本的な側面です。 これらのパラメーターは、バックアップを実行する頻度と、削除前にバックアップを保持する期間を定義します。 AKS クラスターとそのワークロードのバックアップ頻度と保持期間の選択は、回復ポイントの目標 (RPO) と目標復旧時間 (RTO) の定義済みの目標と一致している必要があります。
Kubernetes シナリオでは、RPO は許容できるクラスター状態またはデータ損失の最大許容量を表します。 RTO は、クラスターの状態またはデータ損失とクラスター操作の再開の間の最大許容時間を指定します。
選択したバックアップの頻度と保持期間は、望ましい RPO/RTO ターゲット、ストレージ コスト、バックアップ管理のオーバーヘッドの間のトレードオフです。 つまり、すべての AKS クラスターとワークロードに対して 1 つのサイズに適合する構成はなく、慎重な計画と考慮事項に従って、各クラスターまたはワークロードの最適な構成をケース バイ ケースで定義する必要があります。 AKS クラスターのバックアップ頻度と保持期間を定義する際に考慮すべき関連要素は次のとおりです。
- 重要度: ビジネス継続性の観点から、クラスターとそのワークロード アプリケーション データに関連付けられている重要度のレベル。
- アクセス パターンと変更率: 特定の期間に追加、変更、削除されるクラスターの状態とデータの量。
- データ ボリューム: ストレージ コストに影響を与えるデータの量と、バックアップと回復の操作を完了するために必要な時間。
- コンプライアンス: 内部のコンプライアンス規則と業界の規制に基づくデータ保持とデータ主権の要件。
AKS Backup サービスでは、バックアップの頻度と保持期間はバックアップ ポリシー リソースとして格納されます。これは、クラスターの状態と永続ボリュームのアプリケーション データの両方に適用されます。
AKS Backup のバックアップ ポリシーでは、最大 360 日間の保持期間を持つ日単位および時間単位のバックアップがサポートされますが、複数のポリシーを定義して同じクラスターに適用できます。
AKS Backup でバックアップ ポリシーを構成する方法の詳細については、「バックアップ ポリシーの作成」を参照してください。
バックアップ に関するその他の考慮事項
バックアップと回復ソリューションが組織の要件とポリシーを満たしていることを確認するには、次の点を考慮してください。
- 回復ポイントの目標 (RPO) と目標復旧時間 (RTO): バックアップと回復操作に対応する必要がある特定の RPO ターゲットと RTO ターゲットがあるかどうかを判断します。
- 永続ボリューム (PV): 永続ボリュームを使用しているかどうかを確認し、AKS Backup ソリューションで PV の種類がサポートされていることを確認します。 互換性の詳細については、「AKS Backup のサポート マトリックス」を参照してください。
- バックアップの範囲: クラスター内の特定の名前空間、リソースの種類、特定のデータなど、バックアップする必要のあるものを定義します。 詳細については、「バックアップ ジョブの構成」を参照してください。
- バックアップの頻度と保持期間: バックアップを実行する必要がある頻度と、バックアップを保持する必要がある期間を決定します。 この設定は、バックアップ ポリシーを使用して構成できます。 詳細については、「バックアップ ポリシーの定義」を参照してください。
- クラスターの選択: 要件に基づいて、すべてのクラスターまたは特定の運用環境用クラスターのみをバックアップする必要があるかどうかを決定します。
- テスト復元手順: 定期的なテスト復元を実行して、バックアップ戦略の信頼性と使いやすさを確認します。 この手順は、バックアップと回復ソリューションの有効性を確保するために重要です。 詳細については、「AKS クラスターを復元する」を参照してください。
- サポートされているシナリオ: AKS Backup ソリューションが特定のシナリオをサポートしていることを検証します。 互換性の情報については、「AKS Backup のサポート マトリックス」を参照してください。
- 予算の割り当て: バックアップと復元の操作に特定の予算割り当てがあるかどうかを検討します。 予算要件に合わせて、AKS Backup ソリューションによって提供される価格情報を確認します。
これらのその他の考慮事項を考慮することで、AKS のバックアップと回復ソリューションが組織のニーズと好みを効率的かつ効果的に満たすことができます。
AKS Backup の場所とストレージ
AKS Backup では、バックアップ コンテナーとストレージ アカウントを使用して、バックアップ中にクラスターからキャプチャされたさまざまな種類のデータが格納されます。
ディスク ベースの永続ボリュームの場合、AKS Backup では、基になる Azure Disk の増分スナップショットが使用されます。これは、Azure サブスクリプション内に格納されます。
Backup Vault は、Azure 内のセキュリティで保護されたストレージ エンティティであり、AKS クラスターなど、Azure Backup でサポートされているワークロードのバックアップ データを格納するために使用されます。 Backup Vault 自体には、バックアップ ポリシーと、バックアップ ジョブによって作成されたバックアップと回復ポイントの両方が含まれています。
Azure では、Backup Vault のストレージが自動的に管理されます。 Backup Vault の作成時に構成できる、その中に格納されているデータに対して、いくつかの冗長性オプションから選択できます。
ストレージ アカウントは、Azure 内のデータ オブジェクトのストレージ領域であり、高度な構成が可能です。 データの持続性を確保するために、複数のリージョン内およびリージョン間の冗長性オプションが提供されます。 AKS Backup は、指定されたストレージ アカウント内の BLOB コンテナーを使用して、AKS クラスターの一部のコンポーネントのバックアップを作成します。
増分スナップショットは、マネージド ディスクの特定の時点のバックアップであり、取得時に、最後のスナップショット以降の変更のみで構成されます。 最初の増分スナップショットは、ディスクの完全コピーです。 後続の増分スナップショットには、最後のスナップショット以降のディスクへの差分変更のみがキャプチャされます。
AKS Backup を使用して AKS クラスター間でワークロードを移行する
AKS Backup は、特定のクラスターのバックアップと回復のメカニズムとして使用できます。 AKS Backup では、あるクラスターからバックアップを取得し、次のような別のクラスターに復元できるようにすることで、移行シナリオもサポートされています。
- ステージング クラスターへの開発クラスターの復元
- 複数のクラスター間でコンテンツをレプリケートする
シナリオがサポートされていることを確認するには、次のドキュメントを参照してください。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- アダム・シャリフ | テクニカル アドバイザー
- ジョアオ・タヴァレス | シニア エスカレーション エンジニア
その他の共同作成者:
- Paolo Salvator | FastTrack for Azure のプリンシパル カスタマー エンジニア
- ソニア・カフ | プリンシパル クラウド アドボケイト リーダー
次のステップ
AKS Backup の詳細を確認してください
- AKS Backup の概要
- AKS Backup のサポート マトリックス
- AKS Backup の前提条件
- AKS Backup の構成
- バックアップ コンテナーの作成
- バックアップ ポリシーの作成
- バックアップの構成
- AKS クラスターの復元
- AKS での事業継続とディザスター リカバリーに関するベスト プラクティス
- 信頼性パターン - クラウド設計パターン