IP アドレス割り当ての最適化

このページでは、標準クラスタのノードで実行可能な Pod の最大数を構成する方法について説明します。この値により、Google Kubernetes Engine のノードに割り当てられる IP アドレス範囲のサイズが決定されます。ノードで実行される Pod には、ノードの Pod の CIDR 範囲から IP アドレスが割り振られます。

ノードの最大数は事前構成済みで不変であるため、このページの手順は Autopilot クラスタには適用されません。

概要

デフォルトでは、GKE は標準クラスタのノードを 110 個以下のポッドが実行されるように構成します。Autopilot クラスタには、ノードあたり最大 32 個のポッドがあります。Kubernetes は、各ポッドに一意の IP アドレスが指定されるように、各ノードに IP アドレスの範囲(CIDR ブロック)を割り当てます。CIDR ブロックのサイズは、ノードあたりの最大ポッド数に対応します。

標準クラスタの CIDR 範囲

標準クラスタで、デフォルトの 1 ノードあたり最大 110 個のポッドの場合、Kubernetes は各ノードに /24 CIDR ブロック(256 アドレス)を割り当てます。ノードで作成できるポッド数のおよそ 2 倍の IP アドレスの利用可能範囲を指定することで、Pod がノードに追加されたりノードから削除されたりするときに、Kubernetes で IP アドレスの再利用を軽減できます。

1 ノードあたりのポッド数が 110 というのがハードリミットですが、ノードあたりのポッド数を減らすことはできます。ポッド数をデフォルト値から減らすと、Kubernetes は、これに対応してそのノードにより小さい CIDR ブロックを割り当てます。ブロックには、ノードあたりの最大ポッド数の少なくとも 2 倍のアドレス範囲があります。以下の表は、1 ノードあたりの最大ポッド数に基づいて Kubernetes が各ノードに割り当てる CIDR ブロックのサイズを示しています。

ノードあたりの最大ポッド数 ノードあたりの CIDR 範囲
8 /28
9~16 /27
17~32 /26
33~64 /25
65~110 /24

ノードあたりの最大ポッド数を構成すると、各クラスタノードに必要な IP アドレス空間の量が間接的に構成されます。たとえば、ノードあたりの最大ポッド数を 30 に設定した場合、上の表によると、/26 CIDR 範囲が使用され、各ノードに 64 個の IP アドレスが割り当てられます。ノードあたりの最大ポッド数を構成しない場合は、/24 CIDR 範囲が使用され、各ノードに 256 個の IP アドレスが割り当てられます。

Autopilot クラスタの CIDR 設定

Autopilot クラスタの CIDR サイズのデフォルト設定は次のとおりです。

  • サブネットワークの範囲: /23
  • クラスタ IP4 CIDR(Pod の範囲): /17
  • Service IP4 CIDR(Service の範囲): /22

ポッドの最大数を減らす

ノードあたりの最大ポッド数を減らすと、IP アドレス空間全体の各ノードに必要な部分が少なくなるため、クラスタにより多くのノードを指定できます。 あるいは、クラスタの作成時にポッドにより小さい IP アドレス空間を指定すると、クラスタ内で同じ数のノードをサポートできます。

ノードあたりの最大ポッド数を減らすと、必要な IP アドレスが少ない、より小さなクラスタを作成することもできます。たとえば、ノードあたりのポッド数が 8 の場合、各ノードに /28 CIDR が付与されます。これらのポッド IP アドレス範囲とユーザー定義のサブネットおよびセカンダリ範囲によって、クラスタを正常に作成するために必要な IP アドレスの数が決まります。

クラスタの作成時およびノードプールの作成時にノードあたりの最大ポッド数を構成できます。

制限事項

  • VPC ネイティブ クラスタでのみ、ノードあたりの最大ポッド数を構成できます。
  • ノードの作成は、ポッドのアドレス範囲内の使用可能なアドレスの数に限定されます。ポッドのアドレス範囲のデフォルト サイズ、最小サイズ、最大サイズについては、この表をご覧ください。 連続していないマルチ Pod CIDR を使用して、Pod の IP アドレスを追加することもできます。

ノードあたりの最大ポッド数の構成

クラスタまたはノードプールの作成時にノードあたりの最大ポッド数を構成できます。クラスタまたはノードプールの作成後に、この設定を変更することはできません。

ただし、Pod の IP アドレスが不足している場合は、連続していないマルチ Pod CIDR を使用して、追加の Pod の IP アドレス範囲を作成できます。

クラスタの作成時に Pod アドレス範囲のサイズを設定するには、gcloud ツールまたは Google Cloud Console を使用します。

ノードあたりの最大 110 個の Pod を持つクラスタを作成する

gcloud

gcloud container clusters create cluster-name \
  --enable-ip-alias --cluster-ipv4-cidr=10.0.0.0/21 \
  --create-subnetwork=name='cluster-name-subnet',range=10.4.32.0/27 \
  --services-ipv4-cidr=10.4.0.0/19 --default-max-pods-per-node=110 \
  --zone=compute-zone

Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. [作成] をクリックします。

  3. 必要に応じてクラスタを構成します。

  4. ナビゲーション パネルの [クラスタ] の下の [ネットワーキング] をクリックします。

  5. [VPC ネイティブのトラフィック ルーティングを有効にする(エイリアス IP を使用)] チェックボックスが選択されていることを確認します。

  6. ナビゲーション パネルで、[ノードプール] の下の [ノード] をクリックします。

  7. [ノードあたりの最大 Pod 数] フィールドを 110 に設定します。GKE はこの値を使用して、ノードに割り当てられている IP アドレス範囲のサイズを調整します。

  8. [作成] をクリックします。

これにより、最大 8 つのノードを含めることができるクラスタが作成されます。ノードあたりの最大ポッド数に基づいて、Kubernetes は各ノードにノードのポッドで使用するための /24 CIDR 範囲を付与します。このクラスタは /21 CIDR 範囲(cluster-ipv4-cidr)からポッドの IP アドレスを割り当てるため、最大 8 つのノードが存在できます(24-21 = 3、23 = 8)。110 がデフォルト値であるため、default-max-pods-per-node オプションは省略できます。

ノードあたり最大 8 個の Pod を持つクラスタを作成する

gcloud

gcloud container clusters create cluster-name \
  --enable-ip-alias --cluster-ipv4-cidr=10.0.0.0/21 \
  --create-subnetwork=name='cluster-name-subnet',range=10.4.32.0/21 \
  --services-ipv4-cidr=10.4.0.0/19 --default-max-pods-per-node=8 \
  --zone=compute-zone

Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. [作成] をクリックします。

  3. 必要に応じてクラスタを構成します。

  4. ナビゲーション パネルの [クラスタ] の下の [ネットワーキング] をクリックします。

  5. [VPC ネイティブのトラフィック ルーティングを有効にする(エイリアス IP を使用)] チェックボックスが選択されていることを確認します。

  6. ナビゲーション パネルで、[ノードプール] の下の [ノード] をクリックします。

  7. [ノードあたりの最大 Pod 数] フィールドを 8 に設定します。GKE はこの値を使用して、ノードに割り当てられている IP アドレス範囲のサイズを調整します。

  8. [作成] をクリックします。

これにより、最大 128 個のノードを含めることができるクラスタが作成されます。ノードあたりの最大ポッド数に基づいて、Kubernetes は各ノードにノードのポッドで使用するための /28 CIDR 範囲を付与します。すべての Pod に使用可能な範囲(cluster-ipv4-cidr)が /21 範囲であるため、最大 128 個のノードが存在できます(28-21 = 7、27 = 128)。

既存のクラスタの新しいノードプールに Pod の最大数を設定する

既存のクラスタにノードプールを作成するときに、ノードあたりの最大 Pod 数を指定することもできます。新しいノードプールを作成すると、default-max-pods-per-node がクラスタレベルで構成されていない既存のクラスタでも、IP アドレスの割り当てを最適化できます。

gcloud

gcloud container node-pools create pool-name \
  --cluster=cluster-name \
  --max-pods-per-node=30

Console

  1. Cloud Console の GKE メニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. クラスタのリストで、変更するクラスタの名前をクリックします。

  3. [ノードプールを追加] をクリックします。

  4. ナビゲーション パネルで [ノード] をクリックします。

  5. [ネットワーキング] で、[ノードあたりの最大 Pod 数] フィールドに値を入力します。GKE はこの値を使用して、ノードに割り当てられている IP アドレス範囲のサイズを調整します。

この値は、クラスタレベルで適用される default-max-pods-per-node オプションをオーバーライドします。ノードプールを作成するときに max-pods-per-node オプションを省略すると、クラスタレベルのデフォルト構成が使用されます。

次のステップ