Azure Kubernetes Service (AKS) クラスターの IP アドレス計画

この記事では、Azure Kubernetes Service (AKS) クラスターの IP アドレス計画に関するガイダンスを提供します。

個々の CNI オプションの IP アドレス計画に関する具体的なガイダンスについては、「次の手順」セクションのプラグイン ドキュメントへのリンクを参照してください。

サブネットのサイズ設定

Azure VNet サブネットは、クラスターに対応するのに十分な大きさである必要があります。これは、オーバーレイ ネットワークフラット ネットワークのどちらを使用しているかによって異なります。

オーバーレイ ネットワーク

Azure CNI オーバーレイのようなオーバーレイ ネットワークでは、サブネットがノードに IP を割り当てるのに十分な大きさである必要があります。 ポッドには、個別のプライベート CIDR 範囲から IP が割り当てられ、VNet IP は必要ありません。 クラスターに使用する VNet サブネットは、フラット ネットワークよりも小さくすることができます。

ポッドでスケーリングを考慮できるように、確実にプライベート CIDR 範囲に十分な領域を割り当てることが重要です。 IP アドレス範囲のサイズを計画するときは、最大ポッド数を計算する必要があります。 クラスター内の各ノードには、ポッド用の /24 (256 IP アドレス) サブネットが割り当てられます。 実行する予定のノードの最大数に対応するように、オーバーレイ ネットワーク サブネットを計画する必要があります。

フラット ネットワーク

Azure CNI ポッド サブネットのようなフラット ネットワークには、ノード "と" ポッドの両方に対応できる十分な大きさのサブネットが必要です。 ノードとポッドでは VNet から IP が受信されるため、実行する予定のノードとポッドの最大数を計画する必要があります。 Azure CNI ポッド サブネットでは、ノードのサブネットとポッド用の個別のサブネットが使用されるため、両方を計画する必要があります。

IP アドレスのサイズ変更

アップグレードとスケーリングに関する考慮事項

AKS クラスターの IP アドレス計画時には、アップグレードおよびスケーリング操作に必要な IP アドレスの数を考慮する必要があります。 固定数のノードのみをサポートするように IP アドレスを範囲を設定した場合、ご使用のクラスターをアップグレードしたり、スケーリングしたりすることはできません。

ご使用の AKS クラスターをアップグレードする場合、新しいノードはそのクラスターにデプロイされます。 サービスやワークロードは新しいノードで実行され、古いノードはクラスターから削除されます。 このローリング アップグレードの手順では、IP アドレスが最低で追加で 1 ブロック利用可能になっている必要があります。 したがって、ノード数は n + 1 になります。ここで、n はクラスター内のノードの数です。

AKS クラスターをスケーリングする場合、新しいノードはそのクラスターにデプロイされます。 サービスとワークロードは新しいノードで実行開始されます。 IP アドレス範囲では、クラスターでサポートできるノードとポッドの数をスケールアップする方法を考慮する必要があります。 アップグレード操作用に、ノードを追加で 1 つ含める必要もあります。 その場合、ノードのカウントは n + number-of-additional-scaled-nodes-you-anticipate + max surge になります。

Azure CNI ポッド サブネットを使用していて、ノードで最大数のポッドが実行され、ポッドを定期的に破棄してデプロイする場合は、ノードごとに追加の IP アドレスも考慮する必要があります。 サービスを削除し、その IP アドレスを、デプロイする新しいサービス用に解放し、アドレスを取得するのに、数秒待つ必要がある場合があります。 追加の IP アドレスではこの可能性が考慮されます。

AKS クラスターの IP アドレス計画は、仮想ネットワーク、ノードとポッドの 1 つ以上のサブネット、および Kubernetes サービスのアドレス範囲で構成されます。

Azure リソース アドレス範囲 制限とサイズ変更
Azure Virtual Network 最大サイズ /8。 65,536 個の構成済み IP アドレス制限。 例外については、Azure CNI ポッド サブネットの静的ブロック割り当てに関するページを参照してください ネットワーク内でアドレス空間が重複すると、問題が発生する可能性があります。
Subnet クラスター内のノード、ポッド、およびすべての Kubernetes と Azure リソースに対応できる十分な大きさにする必要があります。 たとえば、内部 Azure Load Balancer をデプロイする場合は、そのフロントエンド IP は、パブリック IP ではなく、クラスター サブネットから割り当てられています。 サブネット サイズでは、アップグレード操作と今後のスケーリング ニーズも考慮する必要があります。

次の式を使用して、アップグレード操作用の追加ノードを含む最小サブネット サイズを計算します。(number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)

50 ノード クラスターの例: (51) + (51 * 30 (default)) = 1,581 (/21 以上)

50 ノード クラスターの例。追加の 10 個のノードをスケールアップするための準備を行います: (61) + (61 * 30 (default)) = 1,891 (/21 以上)

クラスターの作成時にノードあたりのポッドの最大数を指定しない場合、ノードあたりのポッドの最大数は 30 に設定されます。 必要な最小 IP アドレス数はその値に基づきます。 別の最大値に基づいて最小 IP アドレス要件を計算する場合、「ノードごとの最大ポッド数」を参照して、クラスターをデプロイするときにこの値を設定します。

Kubernetes サービスのアドレス範囲 この仮想ネットワーク上またはこの仮想ネットワークに接続されているネットワーク要素では、この範囲を使用しないでください。 サービスのアドレスの CIDR は、/12 より小さくする必要があります。 この範囲は、さまざまな AKS クラスター間で再利用できます。
Kubernetes DNS サービスの IP アドレス クラスター サービスの検出で使用される Kubernetes サービス アドレス範囲内の IP アドレス。 アドレス範囲内の最初の IP アドレスは使用しないでください。 サブネット範囲の最初のアドレスは、kubernetes.default.svc.cluster.local アドレスに使用されます。

ノードごとの最大ポッド数

AKS クラスターのノードごとの最大ポッド数は 250 です。 ノードごとの "既定" の最大ポッド数は、kubenet ネットワークと Azure CNI ネットワークで、またクラスターのデプロイ方法によって異なります。

CNI 既定の最大ポッド数 デプロイ時に構成可能
Azure CNI オーバーレイ 250 はい (最大 250)
Azure CNI ポッド サブネット 110 はい (最大 250)
Azure CNI (レガシ) 30 はい (最大 250)
Kubenet 110 はい (最大 250)

クラスターのノードあたりの最大ポッド数の構成

ノードごとの最大ポッド数を構成できるのは、クラスターのデプロイ時、または新しいノード プールを追加するときです。 ノードあたりの最大ポッド数の値は 250 まで設定できます。

ノードあたりの最大ポッドの最小値は、クラスターの正常性にとって重要なシステム ポッド用の領域を保証するために適用されます。 ノードごとの最大ポッドに対して設定できる最小値は、各ノード プールの構成に最低 30 個のポッド用の領域がある場合に限り、10 です。 たとえば、ノードあたりの最大ポッドを 10 以上に設定するには、個々のノード プールに少なくとも 3 つのノードが必要です。 この要件は、新しく作成された各ノード プールにも適用されます。したがって、ノードあたりの最大ポッドとして 10 が定義されている場合は、追加された以降の各ノード プールには少なくとも 3 つのノードが必要です。

ネットワーク 最小値 最大値
Azure CNI 10 250
Kubenet 10 250

Note

前の表の最小値は、AKS サービスによって厳密に強制されます。 示されている最小値より小さい maxPods 値を設定することはできません。そうすると、クラスターが起動できなくなることがあります。

新しいクラスター

次のいずれかの方法を使用して新しいクラスターを作成するときに、ノードあたりの最大ポッド数を定義できます。

  • Azure CLI:az aks create コマンドを使用して、クラスターをデプロイするときに --max-pods 引数を指定します。
  • Azure Resource Manager テンプレート: Azure Resource Manager テンプレートを使用してクラスターをデプロイするときに、[ManagedClusterAgentPoolProfile] オブジェクトに maxPods プロパティを指定します。
  • Azure portal: クラスターの作成時または新しいノード プールの追加時に、ノード プールの設定の Max pods per node フィールドを変更します。

既存のクラスター

新しいノード プールを作成するときに、ノードあたりの最大ポッド数を定義できます。 既存のクラスターで maxPods の設定を増やす必要がある場合は、新しく必要な maxPods カウントで新しいノード プールを追加します。 ポッドを新しいプールに移行した後、ノードの古いプールを削除します。

次のステップ