ルートベースのクラスタの作成

このページでは、Google Kubernetes Engine でルートベースのクラスタを作成する方法について説明します。

概要

Google Kubernetes Engine では、あるポッドから別のポッドにトラフィックをルーティングする方法によってクラスタを区別できます。Google Cloud Platform のルートを使用するクラスタは、ルートベースのクラスタと呼ばれています。エイリアス IP 範囲を使用するクラスタは、VPC ネイティブ クラスタと呼ばれています。

デフォルトでは、新しいクラスタはルートベースのネットワーク モードを使用して作成されます。

始める前に

このタスクの準備として、次の手順を行います。

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Google Kubernetes Engine API の有効化
  • Cloud SDK がインストール済みであることを確認します。
  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud を最新バージョンに更新します。
    gcloud components update

ルートベースのクラスタの作成

gcloud

gcloud を使用してルートベースのクラスタを作成します。

gcloud container clusters create [CLUSTER_NAME]

ここで、[CLUSTER_NAME] はクラスタに付ける名前です。

Console

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

    Google Kubernetes Engine のメニューに移動

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

  3. クラスタの名前を入力します。

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

クラスタがルートを使用していることを確認する

gcloud

クラスタノードを一覧表示します。

kubectl get nodes

ノードの名前が出力に表示されます。

NAME                                 STATUS   ...     AGE    VERSION
gke-xxx-default-pool-83e239a7-kcg8   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-qm6b   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-wnrq   Ready    ...     42m    1.9.7-gke.6

ルートを一覧表示します。

gcloud compute routes list

出力の NEXT_HOP 列で、いずれかのクラスタノードの名前を探します。

NAME                 NETWORK        DEST_RANGE         NEXT_HOP
...
[ROUTE_NAME]         default        10.24.0.0/24       [YOUR_NODE_NAME]
...

出力では、ルートが特定のポッドアドレス範囲を宛先とするすべてのパケットに対して 1 つのネクストホップを提供していることがわかります。

Console

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

    Google Kubernetes Engine のメニューに移動

  2. クラスタ名をクリックして、[クラスタの詳細] ページを開きます。

  3. [ノードプール] でインスタンス グループを見つけて、インスタンス グループの名前をクリックします。[インスタンス グループ] ページが開き、クラスタノードのリストが表示されます。ノード名をメモしておきます。

  4. GCP Console の [ルート] ページにアクセスします。

    [ルート] ページに移動

  5. ルートの一覧の [ネクストホップ] 列で、いずれかのクラスタノードの名前を探します。その行のルート名をクリックします。

  6. [ルートの詳細] ページが開き、ルートが特定のポッドアドレス範囲を宛先とするすべてのパケットに対して 1 つのネクストホップを提供していることがわかります。

ノードあたりのポッド数

ルートベースのクラスタでは、各ノードのポッドに対して IP アドレスの /24 の範囲が割り当てられます。/24 の範囲では、256 個のアドレスが存在しますが、ノードあたりの最大ポッド数は 110 です。指定できるポッドの約 2 倍の数の利用可能な IP アドレスを指定すると、ポッドがノードに追加されたりノードから削除されたりするときに、Kubernetes での IP アドレスの再利用が楽になります。

ポッドのアドレス範囲

ルートベースのクラスタには、ポッドとサービスのために使用される IP アドレスの範囲が存在します。この範囲はポッドとサービスの両方に使用されますが、ポッドアドレス範囲と呼ばれています。ポッドアドレス範囲の最後の /20 がサービスに使用されます。/20 の範囲の場合、212 = 4,096 個のアドレスが存在します。そのため、4,096 個のアドレスがサービスに使用され、残りの範囲はポッドに使用されます。

コマンド出力では、ポッドアドレス範囲は clusterIPv4Cidr と呼ばれ、サービスに使用されるアドレス範囲は servicesIpv4Cidr と呼ばれます。たとえば、gcloud container clusters describe の出力には、次のような出力が含まれます。

clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20

GKE バージョン 1.7 以降の場合、ポッドアドレス範囲は任意の RFC 1918 ブロック(10.0.0.0/8、172.16.0.0/12、または 192.168.0.0/16)から指定できます。以前のバージョンでは、ポッドアドレス範囲は 10.0.0.0/8 から指定する必要があります。

CIDR 範囲を指定して、ポッドアドレス範囲をカスタマイズできます。たとえば、10.96.0.0/16 の範囲を指定できます。

gcloud

gcloud container clusters create [CLUSTER_NAME] \
    --cluster-ipv4-cidr 10.96.0.0/16

ここで、[CLUSTER_NAME] はクラスタに付ける名前です。

Console

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

    Google Kubernetes Engine のメニューに移動

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

  3. クラスタの名前を入力します。

  4. [Advanced options] をクリックします。

  5. [ポッドアドレス範囲] に「10.96.0.0/16」と入力します。

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

クラスタのサイズに関する考慮事項

所定の GKE クラスタのノード、ポッド、サービスの最大数は、クラスタ サブネットのサイズとポッドアドレス範囲のサイズによって決まります。ポッドアドレス範囲のサイズは、クラスタを作成した後は変更できません。クラスタを作成する際、クラスタの予想される増大に対応できる十分な大きさのポッドアドレス範囲を選択するようにしてください。

次の表は、900 ノードのクラスタに十分なアドレス範囲を選択する方法を説明しています。

範囲 ガイダンス
ノード

ノード IP アドレスは、クラスタ サブネットのプライマリ範囲から取得されます。クラスタ サブネットは、クラスタ内のノードの総数を保持するのに十分な大きさである必要があります。

たとえば、900 ノードのクラスタを作成する予定であれば、クラスタ サブネットは少なくとも /22 のサイズである必要があります。/22 の範囲の場合、210 = 1,024 個のアドレスが存在します。4 個の予約済み IP アドレスを差し引くと 1,020 個になり、これは 900 ノードに対して十分です。

ポッドのアドレス範囲

各ノードには、ポッド用に IP アドレスの /24 の範囲があります。/24 の範囲の場合、28 = 256 個のアドレスが存在します。ポッドアドレス範囲内の 4,096 個のアドレスがサービスに使用されていることを思い出してください。ポッドアドレス範囲の残りの部分はポッド用に使用され、ノード数 x 256 個のアドレスを保持するのに十分な大きさでなければなりません。

たとえば、900 ノードのクラスタを作成するとします。その場合、ポッド用に 900 x 256 = 230,400 個のアドレスが必要です。今度は /14 のポッドアドレス範囲があるとします。/14 の範囲の場合、218 = 262,144 個のアドレスが存在します。サービスに使用される 4,096 個のアドレスを引くと、258,048 になります。これは 900 ノードに対して十分です。

範囲サイズのデフォルトと制限

次の表は、クラスタ サブネットとポッドアドレス範囲の最小、最大、およびデフォルトのサイズを示しています。

範囲 デフォルト サイズ 最小サイズ 最大サイズ
ノード

/20、つまり 212 = 4,096 個のアドレス。4 個の予約済みアドレスを差し引くと、ノード用のアドレスは 4,092 個です。

/29、つまり 23 = 8 個のアドレス。4 個の予約済みアドレスを差し引くと、ノード用のアドレスは 4 個です。

/7、つまり 225 のアドレス。これはノードに対して約 3,300 万個のアドレスです。

ポッドのアドレス範囲

/14、つまり 218 = 262,144 個のアドレス。

/19、つまり 213 = 8,192 個のアドレス。

/9、つまり 223 = 8,388,608 個のアドレス。

制限事項

  • VPC ネイティブ クラスタは、ルートベースのクラスタに移行できません。
  • ルートベースのクラスタは、VPC ネイティブ クラスタに移行できません。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント