次の方法で共有


Azure Kubernetes Service (AKS) 上の Windows コンテナーのベスト プラクティス

AKS で、Linux または Windows Server をノード上のオペレーティング システム (OS) として実行するノード プールを作成できます。 Windows Server ノードは、.NET Framework など、ネイティブの Windows コンテナー アプリケーションを実行できます。 Linux OS と Windows OS では、コンテナーのサポートと構成に関する考慮事項が異なります。 詳細については、「Kubernetes での Windows コンテナーに関する考慮事項」を参照してください。 さまざまな業界が AKS で Windows コンテナーを使用しています。その手法について詳しくは、「Windows AKS の顧客事例」を参照してください。

この記事では、AKS で Windows コンテナーを実行するためのベスト プラクティスについて説明します。

Linux と Windows のノード プールを含む AKS クラスターを作成する

新しい AKS クラスターを作成すると、既定では Azure プラットフォームによって Linux ノード プールが作成されます。 このノード プールには、クラスターが機能するために必要なシステム サービスが含まれています。 Azure は、ユーザーから抽象化されたコントロール プレーンの作成と管理も行います。つまり、メインのコントロール プレーン コンポーネントをホストしているノードの基になる OS には公開されません。 クラスターの信頼性とパフォーマンスを確保するために、既定の Linux ノード プールで少なくとも "2 つのノード" を実行することをお勧めします。 クラスター全体を削除しない限り、既定の Linux ノード プールを削除することはできません。

次のように、AKS クラスターで Windows ベースのワークロード実行を計画している場合に、Linux ノード プールのデプロイを検討しなければならない場合があります。

  • Linux と Windows のワークロードを実行する場合は、Linux ノード プールと Windows ノード プールを同じクラスターにデプロイできます。
  • NGINX などの Linux に基づいたインフラストラクチャ関連コンポーネントをデプロイする場合、Windows ノード プールと共に Linux ノード プールが必要です。 開発とテストのシナリオでは、コントロール プレーン ノードを使用できます。 運用環境のワークロードでは、信頼性とパフォーマンスを確保するために、個別の Linux ノード プールをデプロイすることをお勧めします。

AKS 上の Windows を使用して既存のアプリケーションを最新化する

既存のアプリケーションをコンテナ化し、AKS 上の Windows を使用して実行することができます。 コンテナ化プロセスを開始する前に、アプリケーションのアーキテクチャと依存関係を理解しておくことが重要です。 詳細については、Windows コンテナーを使用した既存のアプリケーションのコンテナ化に関する記事を参照してください。

Windows OS のバージョン

ベスト プラクティスのガイダンス

Windows Server 2022 は、改善されたセキュリティとパフォーマンスを提供し、AKS 上の Windows ノード プールに推奨される OS です。 AKS では、ホスト OS のバージョンとして Windows Server 2022 が使用され、プロセス分離のみがサポートされます。

AKS では、Windows Server オペレーティング システムの 2 つのオプション (長期サービス チャネル (LTSC) リリースと Windows Server Annual Channel for Containers) がサポートされています。

  1. AKS では、Windows Server 2022 や Windows Server 2019 など、長期サービス チャネル (LTSC) リリースがサポートされています。 このチャネルは 3 年ごとにリリースされ、5 年間サポートされます。 長期サポート (LTS) を使用しているお客様は、Windows Server 2022 を使用する必要があります。

    AKS では、ホスト OS のバージョンとして Windows Server 2019 と Windows Server 2022 が使用され、プロセス分離のみがサポートされます。 他のバージョンの Windows Server を使用してビルドされたコンテナー イメージは AKS でサポートされません。 詳細については、Windows コンテナー バージョンの互換性 を参照してください。

    Kubernetes バージョン 1.25 以降では、Windows Server 2022 が既定の OS です。 Windows Server 2019 は、Kubernetes バージョン 1.32 がサポート終了に達した後に廃止されます。 Windows Server 2022 は、Kubernetes バージョン 1.34 がサポート終了に達した後に廃止されます。 詳細については、「AKS リリース ノート」を参照してください。 最新の Windows Server OS バージョンを最新の状態に保ち、AKS でのサポートの予定のロードマップの詳細については確認するには、AKS のパブリック ロードマップを参照してください。

  2. AKS では、Windows Server Annual Channel for Containers (プレビュー) がサポートされています。 このチャネルは毎年リリースされ、2 年間サポートされます。 このチャネルは、イノベーション サイクルと移植性の向上を必要とするお客様にとって有益です。 移植性機能により、Windows Server 2022 ベースのコンテナー イメージ OS を、新しいバージョンの Windows Server ホスト OS (新しい Annual Channel リリースなど) で実行できるようになります。

    Windows Annual Channel のバージョンは、お使いのノード プールの Kubernetes バージョンに基づいています。 Annual Channel をあるバージョンから次のバージョンにアップグレードするには、Annual Channel の次のバージョンをサポートする Kubernetes バージョンにアップグレードします。 詳細については、AKS 上の Windows Server Annual Channel for Containers に関するページを参照してください。

ネットワーク

ネットワーク モード

ベスト プラクティスのガイダンス

Windows ノード プールを含む AKS クラスターでは、Azure Container Networking Interface (Azure CNI) のみをサポートし、これを既定として使用します。

Windows では、kubenet ネットワークはサポートされていません。 Windows ノード プールを含む AKS クラスターでは、Azure CNI を使用する必要があります。 詳細については、「AKS でのアプリケーションに対するネットワークの概念」を参照してください。

Azure CNI には、ワークロードの要件に基づいて次の 2 つのネットワーク モードが用意されています。

  • Azure CNI オーバーレイは、kubenet に似たオーバーレイ ネットワークです。 オーバーレイ ネットワークを使用すると、ノードに仮想ネットワーク (VNet) IP を使用し、そのノード内のポッドには非公開のアドレス空間を使用でき、クラスター間で再利用できます。 Azure CNI オーバーレイが、推奨されるネットワーク モードです。 ネットワークの構成と管理が簡素化され、AKS ネットワークで最高のスケーラビリティが提供されます。
  • 動的 IP 割り当てを使用する Azure CNI には、IP アドレス管理に関する追加の計画と考慮が必要です。 このモードでは、ノードとポッド "両方の" VNet IP が提供されます。 この構成により、ポッドの IP に直接アクセスできるようになります。 ただし、複雑さが増し、スケーラビリティが低下します。

使用するネットワーク モードの決定で支援が必要な場合は、ネットワーク モデルの選択に関する記事を参照してください。

ネットワーク ポリシー

ベスト プラクティスのガイダンス

ネットワーク ポリシーを使用してポッド間のトラフィックを保護してください。 Windows では、Azure ネットワーク ポリシー マネージャーと Calico ネットワーク ポリシーがサポートされています。 詳細については、「ネットワーク ポリシー エンジンの相違点: Cilium、Azure NPM、Calico」を参照してください。

ポッド間のトラフィックを管理する場合は、最小特権の原則を適用する必要があります。 Kubernetes のネットワーク ポリシー機能を使用すると、クラスター内のポッド間でイングレスとエグレスのトラフィック ルールを定義して適用できます。 詳細については、AKS のネットワーク ポリシーを使用したポッド間のトラフィックの保護に関する記事を参照してください。

Calico ネットワーク ポリシーを使用する AKS クラスター上の Windows ポッドでは、既定でフローティング IP が有効になります。

更新プログラムとアップグレード

最新のセキュリティ更新プログラム、機能セット、コンプライアンス要件をシステムに確実に備えるために、Windows 環境を最新の状態に保つことが重要です。 AKS などの Kubernetes 環境では、Kubernetes バージョン、Windows ノード、および Windows コンテナー イメージとポッドを維持する必要があります。

Kubernetes バージョンのアップグレード

AKS には、マネージド Kubernetes サービスとして、クラスターを最新の Kubernetes バージョンにアップグレードするために必要なツールが用意されています。 詳細については、「AKS クラスターのアップグレード」を参照してください。

Windows ノードの月次更新プログラム

AKS 上の Windows ノードは、月次更新スケジュールに従います。 AKS は毎月、Windows ノード プールで利用可能な最新の更新プログラムを含む新しい VHD を作成します。 VHD には、ホスト イメージ、最新の Nano Server イメージ、最新の Server Core イメージ、コンテナーが含まれます。 ノードに最新のセキュリティ パッチが適用されるように、Windows ノード プールの更新を毎月実行することをお勧めします。 詳細については、AKS ノード イメージのアップグレードに関する記事を参照してください。

Note

Windows システムでのアップグレードには、OS バージョンのアップグレードとノード OS 月次更新プログラムの両方が含まれます。

AKS リリース トラッカーAKS リリース ノートを使用して、新しい月次リリースの公開に関する最新情報を得ることができます。

Windows ノード OS バージョンのアップグレード

Windows には、Windows Server 2019 や Windows Server 2022 といった、新しいバージョンの OS のリリース周期があります。 Windows ノード OS バージョンをアップグレードする場合は、Windows コンテナー イメージのバージョンが Windows コンテナー ホストのバージョンと一致し、ノード プールに含まれる Windows Server のバージョンが 1 つだけであることを確認します。

Windows ノード OS バージョンをアップグレードするには、次のステップを完了する必要があります。

  1. 新しい Windows Server バージョンで新しいノード プールを作成します。
  2. 新しい Windows コンテナー イメージを使用してワークロードを新しいノード プールにデプロイします。
  3. 古いノード プールの使用を停止します。

詳細については、AKS での Windows Server ワークロードのアップグレードに関する記事を参照してください。

Note

Windows は、Windows のノードとコンテナーの移植性とバージョンの混合をサポートする新しい Windows Server Annual Channel for Containers を発表しました。 この機能は AKS ではまだサポートされていません。

AKS の機能プランを追跡するには、公開中の AKS ロードマップを参照してください。

次のステップ

AKS 上の Windows コンテナーの詳細については、次のリソースを参照してください。