AKS on Azure Stack HCI のベースライン アーキテクチャ

Azure Stack
Windows Server

このシナリオでは、Azure Stack HCI (AKS ハイブリッド) で実行される Microsoft Azure Kubernetes Service (AKS) のベースライン アーキテクチャを設計して実装する方法について説明します。

この記事には、組織のビジネス要件に基づいたクラスターのネットワーク、セキュリティ、ID、管理、監視に関する推奨事項が記載されています。 これは、2 つの記事で構成されるアーキテクチャ ベースライン ガイダンス セットの一部です。 ネットワーク設計に関する推奨事項については、こちらを参照してください。

アーキテクチャ

次の図は、Azure Stack HCI または Windows Server 2019/2022 データセンター フェールオーバー クラスターの Azure Kubernetes Service のベースライン アーキテクチャを示しています。

Conceptual image of Baseline architecture for Azure Kubernetes Service on Azure Stack HCI.

このアーキテクチャの Visio ファイルをダウンロードします。

アーキテクチャは、次のコンポーネントと機能で構成されています。

  • Azure Stack HCI (20H2) 。 オンプレミスのハイブリッド環境で仮想化された Windows および Linux のワークロードとそのストレージをホストするハイパーコンバージド インフラストラクチャ (HCI) クラスター ソリューション。 Azure Stack HCI クラスターは、2 から 8 ノードのクラスターとして実装されます。
  • Azure Kubernetes Service on Azure Stack HCI (AKS ハイブリッド)。 コンテナー化されたアプリケーションの大規模な実行を自動化する AKS のオンプレミス実装。
  • Azure Arc. Azure Resource Manager ベースの管理モデルを、Azure 以外のリソース (Azure 以外の仮想マシン (VM)、Kubernetes クラスター、コンテナー化データベースなど) にまで拡張するクラウドベースのサービス。
  • Azure Policy 組織標準の適用を支援し、大規模にコンプライアンスを評価するクラウドベースのサービス。このために、Azure リソース (Arc 対応リソースを含む) を評価して、それらのリソースの特性とビジネス ルールを照合します。 これらの標準には、クラスター内で実行されるワークロードにポリシーを適用する Kubernetes 用の Azure Policy も含まれます。
  • Azure Monitor。 クラウドベースのサービスは、クラウドおよびオンプレミス環境からテレメトリを収集、分析し、それに対応する包括的なソリューションを提供することで、アプリケーションやサービスの可用性とパフォーマンスを最大限に高めます。
  • Microsoft Defender for Cloud。 データ センターのセキュリティ体制を強化し、クラウドとオンプレミスのハイブリッド ワークロード全体を保護する高度な脅威防止機能を提供する統合インフラストラクチャ セキュリティ管理システム。
  • Azure Automation。 Azure 環境と非 Azure 環境を一貫性をもって管理するクラウドベースのオートメーションと構成サービスを提供します。
  • Velero。 オンデマンド バックアップと定期バックアップをサポートし、Kubernetes クラスター内のすべてのオブジェクトを復元するオープンソース ツール。
  • Azure Blob Storage。 クラウドネイティブのワークロード、アーカイブ、データ レイク、ハイパフォーマンス コンピューティング、機械学習に対応した、高度にスケーラブルで安全なオブジェクト ストレージです。

Components

シナリオの詳細

考えられるユース ケース

  • AKS のオンプレミス Kubernetes 実装で、高可用性に対応したコンテナーベースのワークロードを実装する。
  • コンテナー化されたアプリケーションの大規模な実行を自動化する。
  • Microsoft 認定ソリューション、クラウドベースの自動化、一元化された管理、一元的なモニターにより、総保有コスト (TCO) が削減されます。

認定ハードウェア

Azure Stack HCI 認定ハードウェアを使用します。このハードウェアでは、セキュア ブート、United Extensible Firmware Interface (UEFI)、トラステッド プラットフォーム モジュール (TPM) の設定をただちに使用できます。 コンピューティングの要件は、アプリケーションと、AKS on Azure Stack HCI クラスターで実行されるワーカー ノードの数によって決まります。 高可用性を実現するには、Azure Stack HCI のデプロイ用に複数の物理ノードを使用するか、少なくとも 2 つのノードの Windows Server Datacenter フェールオーバー クラスターを使用します。 サーバーはすべて同じ製造元とモデルである必要があり、第 2 レベルのアドレス変換 (SLAT) に対応した 64 ビット Intel Nehalem グレード、AMD EPYC グレード、またはそれ以降の互換プロセッサが使用されている必要があります。

クラスターのデプロイ戦略

AKS では、ウィザードや PowerShell コマンドレットが提供されており、オンプレミス Kubernetes を簡単にデプロイできます。これらを使用して、Kubernetes と必須の Azure Stack HCI アドオンを設定できます。 Azure Stack HCI 上の Azure Kubernetes Service クラスターのコンポーネントは次のとおりです。

  • 管理クラスター。 Azure Stack HCI または Windows Server 2019/2022 Datacenter フェールオーバー クラスターで実行される高可用性仮想マシン (VM) に管理クラスターをデプロイします。 管理クラスターは、複数のワークロード クラスターのデプロイと管理を担当します。管理クラスターには、次のコンポーネントが含まれます。
    • API サーバー。 管理ツールとやり取りします。
    • ロード バランサー。 管理クラスターの API サーバーの負荷分散規則を管理します。
  • ワークロード クラスター。 高可用性コントロール プレーン コンポーネントとワーカー ノード コンポーネントを実装します。 コンテナー化されたアプリケーションは、ワークロード クラスターで実行されます。 アプリケーションの分離を実現するために、最大 8 つのワークロード クラスターをデプロイできます。 ワークロード クラスターは、次のコンポーネントで構成されます。
    • コントロール プレーン。 Linux ディストリビューションで実行されます。Kubernetes API とやり取りするための API サーバー コンポーネントが含まれ、さらにクラスターのすべての構成とデータを保存するための分散キー値ストア (etcd) が含まれます。
    • ロード バランサー。 Linux VM で実行されます。ワークロード クラスターに負荷分散サービスを提供します。
    • ワーカー ノード。 コンテナー化されたアプリケーションをホストする Windows または Linux オペレーティング システムで実行されます。
    • Kubernetes リソース。 ポッドはアプリケーションの単一のインスタンスを表します。通常、ポッドはコンテナーと 1 対 1 でマッピングされますが、特定のポッドに複数のコンテナーが含まれる場合もあります。 デプロイは、1 つ以上の同一のポッドを表します。 ポッドとデプロイは、リソースの管理へのアクセスを制御する 1 つの名前空間に論理的にグループ化されます。

ネットワークの要件

Kubernetes は、Kubernetes ノードを仮想ネットワークに接続することで、仮想ネットワークに抽象化レイヤーを提供します。 また、kube-proxy コンポーネントを介したポッドの受信接続と送信接続も提供します。 Azure Stack HCI プラットフォームでは、HAProxy ロード バランサー VM を構成することで、デプロイがさらに簡略化されます。

Note

Azure Stack HCI および Windows Server クラスターに AKS ノードをデプロイするためのネットワーク概念を設計および実装する方法については、このシリーズの 2 番目の記事の「ネットワーク アーキテクチャ」を参照してください。

このアーキテクチャでは、次のいずれかのネットワーク オプションを使用して IP アドレスを割り当てる仮想ネットワークが使用されます。

  • 静的 IP ネットワーク。 デプロイ内のすべてのオブジェクトに対して定義済みの静的アドレス プールを使用します。 追加の利点があり、ワークロードとアプリケーションに常に到達可能となります。 これが推奨される方法です。
  • DHCP ネットワーク。 動的ホスト構成プロトコル (DHCP) サーバーを使用して、Kubernetes ノード、基盤 VM、ロード バランサーに動的 IP アドレスを割り当てます。

仮想 IP プールとは、Kubernetes クラスター API サーバーと Kubernetes サービスに IP アドレスを割り当てるために使用される特定範囲の予約済み IP アドレスです。

Project Calico for Kubernetes を使用して、ネットワーク ポリシーやフロー制御などの他のネットワーク機能を取得します。

ストレージの要件

クラスター内のすべてのサーバーで、サイズとモデルが同じである同じ種類のドライブを使用します。 Azure Stack HCI は、直接接続の Serial Advanced Technology Attachment (SATA)、Serial Attached SCSI (SAS)、Non-Volatile Memory Express (NVMe)、またはそれぞれ 1 つのサーバーに物理的に接続された永続メモリ ドライブを使用して動作します。 クラスター ボリュームの場合、HCI はソフトウェア定義ストレージ テクノロジ (記憶域スペース ダイレクト) を使用して、フォールト トレランス、スケーラビリティ、パフォーマンスのためにストレージ プール内の物理ドライブを結合します。 Azure Stack HCI 上の Kubernetes で実行されるアプリケーションでは、多くの場合、次のストレージ オプションを使用できる必要があります。

  • ボリューム。 複数のポッドにまたがり、アプリケーション ライフサイクルを通じて、データを格納、取得、保存する方法を表します。
  • 永続ボリューム。 Kubernetes API によって作成および管理されるストレージ リソースであり、個々のポッドの有効期間が終了しても存続できます。

コストとパフォーマンスを最適化するために、さまざまな層と場所にストレージ クラスを定義することを検討してください。 ストレージ クラスは、永続ボリュームの動的プロビジョニングをサポートします。また、ポッドが削除されたときに永続ボリュームを管理するために、基盤となるストレージ リソースのアクションを指定する reclaimPolicy を定義します。

AKS on Azure Stack HCI を管理する

AKS on Azure Stack HCI は、次の管理オプションを使用して管理できます。

  • Windows Admin Center。 Azure Stack HCI 上の Azure Kubernetes Service クラスターのライフサイクルを管理するための直感的な UI (Kubernetes オペレーター用) を提供します。
  • PowerShell。 AKS on Azure Stack HCI のダウンロード、構成、デプロイを簡単に行うことができます。 PowerShell モジュールは、他のワークロード クラスターのデプロイと構成、既存のクラスターの再構成もサポートしています。

Active Directory 要件

管理を最適化するために、AKS on Azure Stack HCI または Windows Server Datacenter フェールオーバー クラスターを Active Directory Domain Services (AD DS) 環境と統合します。 可能であれば、アクセスとアクセス許可をよりきめ細かく制御するために、AKS on Azure Stack HCI のサーバーとサービスに個別の組織単位を使用します。 Azure Kubernetes Service on Azure Stack HCI と Active Directory を統合すると、Windows ドメイン参加マシンのユーザーは、シングル サインオン (SSO) 資格情報を使用して (kubectl で) API サーバーに接続できます。

推奨事項

ほとんどのシナリオには、次の推奨事項が適用されます。 優先すべき特定の要件がない限り、これらの推奨事項に従ってください。

AKS ハイブリッド デプロイを Azure Arc と統合する

TCO を最小限に抑えるために、AKS ハイブリッド デプロイを Azure Arc と統合します。次の Azure サービスを使用することを検討してください。

  • Azure Monitor Container Insights。 Linux クラスターと Windows クラスターの両方で実行されているコンテナー ワークロードのパフォーマンスを監視します。 これにより、メトリック API を通じて、コントローラー、ノード、コンテナーから、メモリやプロセッサのメトリックが収集されます。 コンテナーの分析情報を使用すると、メモリとプロセッサの使用率を特定すること、ポッド全体のパフォーマンスを検出すること、クラスターの動作を理解すること、事前対応型監視のアラートを構成することができます。
  • 自動化機能。 AKS ハイブリッドは、OS の更新プログラムと、Azure Stack HCI ベンダーおよびパートナーによって提供されるファームウェアやドライバーを含むフルスタック更新プログラムを組み合わせることで、さまざまな自動化機能を提供しています。 Windows PowerShell は、いずれかの Azure Stack HCI サーバーからローカルで実行するか、管理コンピューターからリモートで実行することができます。 Azure Automation および Azure Arc との統合により、仮想化かつコンテナー化されたワークロードの広範な自動化シナリオが実現します。
  • Velero と Azure Blob Storage。 Velero はオープンソース ツールであり、Kubernetes カスタム リソース定義 (CRD) として etcd データベースで定義および保存されるリソースの Kubernetes クラスター内のすべてのオブジェクトについて、オンデマンド バックアップ、定期バックアップ、復元をサポートします。 名前空間またはラベル セレクターを使用して、クラスター全体またはクラスターの一部の Kubernetes リソースとボリュームをバックアップできます。 Velero ツールで作成されたバックアップ セットは、Azure ストレージ アカウントの BLOB コンテナーに保存されます。
  • Azure Arc 対応 Kubernetes サービス。 AKS on Azure Stack HCI クラスターの Azure Resource Manager 表現を提供します。 ログとメトリックを収集するため、クラスター メタデータ、クラスター バージョン、ノード数を収集するため、エージェントが最適なパフォーマンスを発揮しているか確認するために、Azure Arc 対応エージェントを Kubernetes 名前空間にデプロイします。
  • Azure Policy Azure Policy を使用して、AKS クラスターに組み込みのセキュリティ ポリシーをデプロイして適用します。 カスタム ポリシー定義を使用して GitOps を適用することもできます。これは、Git リポジトリで Kubernetes 構成 (デプロイ、名前空間など) の必要な状態を宣言する方法です。
  • Kubernetes 用の Azure Policy。 1 つの場所から、Gatekeeper によって実装される内部クラスター ポリシーを管理し、制約テンプレートとしてクラスターにポリシー定義をデプロイし、Kubernetes クラスターのコンプライアンス状態を報告します。
  • Azure RBAC。 ロールの割り当てのため、Azure Arc 対応 Kubernetes へのアクセスを管理するために使用します。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

[信頼性]

  • ワークロードの最小レベルの可用性を実現するために、管理クラスターに高可用性 VM を実装し、Kubernetes クラスターに複数のホストを実装します。
  • Velero と Azure Blob Storage を使用してワークロード クラスターをバックアップおよび復元します。 ビジネス要件を満たすための可用性と回復のターゲットを定義します。
  • AKS ハイブリッド デプロイでは、高可用性とフォールト トレランスのためにフェールオーバー クラスタリングとライブ マイグレーションが使用されます。 ライブ マイグレーションは、ダウンタイムを発生させることなく、実行中の仮想マシンを Hyper-V ホスト間で透過的に移動できるようにする Hyper-V 機能です。
  • 中断シナリオでポッドの回復性を確保するために、Deployments、Affinity Mapping、ReplicaSets などの Kubernetes 機能を使用するようにデプロイを構成します。
  • アーキテクチャ セクションで参照されているサービスが、Azure Arc のデプロイ先のリージョンでサポートされていることを確認する必要があります。
  • パブリック コンテナー イメージの使用を制限することを検討し、ACR など SLA を制御する対象のコンテナー レジストリからのみプルするようにします。

セキュリティ

ホストとコンテナーをセキュリティで保護することで、スタック全体に焦点を当てます。

インフラストラクチャのセキュリティ

  • セキュア ブート、UEFI、TPM の設定をただちに使用できる Azure Stack HCI 認定ハードウェアを使用します。 これらのテクノロジを の仮想化ベースのセキュリティ (VBS)と組み合わせることで、セキュリティを重視するワークロードを保護できます。 検証済みソリューションについては、「Azure Stack HCI ソリューション」を参照してください。
  • セキュア ブートを使用して、元の機器製造元が信頼しているソフトウェアのみがサーバーで起動されるようにします。
  • UEFI を使用して、サーバーの起動プロセスを制御します。
  • TPM を使用して暗号化キーを保存し、ハードウェアベースのセキュリティ関連のすべての機能を分離します。
  • BitLocker ドライブ暗号化を使用すると、保存時に記憶域スペース ダイレクト ボリュームを暗号化できます。
  • Calico ネットワーク ポリシーを構成して、コンテナー間のネットワーク分離ルールを定義します。
  • 増加したセキュリティ要件に対応するために、専用の Windows サーバーにワークロード クラスターをデプロイすることを検討してください。
  • Windows Admin Center を通じて利用できる Microsoft Defender for Cloud を使用して、サーバーとクラスターのセキュリティ設定を一元的に管理します。 これにより、Arc 対応 Kubernetes クラスターを脅威から保護できます。 Microsoft Defender for Cloud 拡張機能は、クラスター内のノードからデータを収集し、それを詳しく分析するためにクラウド内の Azure Defender for Kubernetes バックエンドに送信します。
  • 証明書を使用して通信をセキュリティで保護します。
  • Key Management Server (KMS) プラグインを使用して、Kubernetes シークレット ストア (etcd) の暗号化キーをローテーションします。

アプリケーションのセキュリティ

  • AKS on Azure Stack HCI で Azure Key Vault シークレット プロバイダー拡張機能を使用して、さまざまなアプリケーションで使用されるシークレットを、Azure Key Vault サービスで保存することでさらに保護します。
  • Open Service Mesh AKS アドオンを使用して、相互 TLS (mTLS) を有効にすることで、サービス間通信をセキュリティで保護します。 サービスの詳細なアクセス制御ポリシーを定義して実行するために、このアドオンを使用することもできます。
  • Kubernetes 用の Azure Policy を使用して、特権ポッド不可など、クラスターのセキュリティ ポリシーを適用します。
  • コンテナー リポジトリでの脆弱性スキャンを含む Azure Container Registry を使用します。
  • ドメインに参加していないホストでの Windows ワークロードには、グループ管理のセキュリティ アカウントを使用します。 (Windows Server にのみ適用されます。)

コンテナーのセキュリティ

  • 不要なサービスを削除して、ホストとデーモンの環境を強化します。
  • イメージとは別にシークレットを保持し、コンテナー オーケストレーション エンジン経由でのみそれらをマウントします。
  • 脆弱性スキャンと RBAC をサポートする Azure Container Registry でイメージをセキュリティで保護します。
  • コンテナーの分離を使用し、コンテナーを特権モードで実行しないようにします。これは、コンテナーが侵害された場合に、攻撃者が特権を拡大できないようにするためです。

コストの最適化

  • Azure 料金計算ツールを使用して、アーキテクチャで使用するサービスのコストを見積もります。 その他のベスト プラクティスについては、「Microsoft Azure Well-Architected Framework」の「コストの最適化」セクションを参照してください。 詳細については、価格の詳細に関するページをご覧ください。
  • AKS の課金単位は仮想コアであるため、コストを最適化するために、物理コンピューターにハイパースレッディングを実装することを検討してください。

オペレーショナル エクセレンス

  • クラスターの作成ウィザード。 Windows Admin Center でのプロビジョニングと管理のエクスペリエンスが簡素化されました。 Windows 管理センターのクラスターの作成ウィザードは、Azure Stack HCI クラスターを作成するためのウィザードベースのインターフェイスを提供しています。 クラスターの作成ウィザードでは、簡単さとデプロイ スクリプトの作成がトレードオフとなります。複数のデプロイにわたる監査と再現性のために、デプロイ スクリプトをソース管理できます。 同様に、 Windows 管理センターでは、Azure Stack HCI VMを管理するプロセスが簡略化されています。
  • Azure Arc。Azure Arc や管理、メンテナンス、回復性の追加機能を提供する特定範囲の Azure サービス (Azure Monitor、Log Analytics など) と統合します。
  • GitOps。 手動で Kubertnets コンポーネントを構成する代わりに、自動ツールを使用して Kubernetes クラスターに構成を適用します。これらの構成はソース リポジトリにチェックインされます。 このプロセスは GitOps と呼ばれることが多く、Kubernetes の人気の GitOps ソリューションには、Flux や Argo CD などがあります。 このアーキテクチャでは、Flux に基づく Microsoft 提供の GitOps 拡張機能を使用することをお勧めします。
  • Azure Arc 対応 Open Service Mesh (OSM) 軽量で拡張可能なクラウドネイティブ サービス メッシュであり、ユーザーは、これを使用することで、動的性が高いマイクロサービス環境を統一した方法で管理すること、セキュリティで保護することができ、またこのような環境を監視する機能をただちに使用できます。

パフォーマンス効率

  • アプリケーションのアップタイムとパフォーマンスの向上、管理と運用の簡素化、総保有コストの削減のために、Azure Stack HCI 認定ハードウェアを使用します。
  • AKS on Azure Stack HCI の制限について理解します。 Microsoft では、クラスターあたり最大 8 台の物理サーバー、8 個の Kubernetes クラスター、200 個の VM を備えた AKS on Azure Stack デプロイがサポートされます。
  • AKS on Azure Stack HCI のスケーリングは、ワーカー ノードとターゲット クラスターの数に依存します。 ワーカー ノードのハードウェアを適切にディメンション化するには、ターゲット クラスター内のポッド、コンテナー、ワーカー ノードの数を予測する必要があります。 Azure Stack HCI の容量の少なくとも 15% が、計画的な障害と計画外の障害の両方のために予約されていることを確認する必要があります。 パフォーマンス効率のために、コンピューティング リソースを効率的に使用してシステム要件を満たし、需要の変化とテクノロジの進化に応じてその効率を維持します。 一般的なルールは、メンテナンス中または計画外の障害時に 1 つのノードがオフラインになった場合に、残りのノードが増加した負荷を管理できるだけの十分な容量を使用できるようにすることです。
  • 各ターゲット クラスターで多数の Kubernetes サービスを実行する場合、ロード バランサー VM のサイズを大きくすることを検討してください。
  • AKS on Azure Stack HCI は、Azure Stack HCI 配置ロジックを使用して、ターゲット クラスター内の各ノード プールに対してワーカー ノードを配布します。
  • AKS ホスト、ワークロード クラスター、クラスター API サーバー、Kubernetes サービス、アプリケーション サービスを構成するために IP アドレスの予約を計画します。 Microsoft では、Azure Stack HCI での AKS デプロイ用に、少なくとも 256 個の IP アドレスを予約することをお勧めします。
  • レイヤー 7 で動作し、よりインテリジェントなルールを使用してアプリケーションのトラフィックを分散させるイングレス コントローラーを実装することを検討してください。
  • トラフィックの帯域幅の割り当てのために、ネットワーク パフォーマンスの最適化を実施します。
  • 広範なワークロードのために、グラフィックス処理装置 (GPU) アクセラレーションを使用します。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

  • Lisa DenBeste | プロジェクト管理プログラム マネージャー
  • Kenny Harder | プロジェクト マネージャー
  • Mike Kostersitz | プリンシパル プログラム マネージャー リード
  • Meg Olsen | プリンシパル
  • Nate Waters | 製品マーケティング マネージャー

その他の共同作成者:

次のステップ