ノードプールの追加と管理

このページでは、Google Kubernetes Engine(GKE)クラスタを実行するノードプールを追加して操作する方法を説明します。ノードプールの仕組みについては、ノードプールをご覧ください。

始める前に

作業を始める前に、次のことを確認してください。

次のいずれかの方法で gcloud のデフォルトの設定を指定します。

  • gcloud init。デフォルトの設定全般を確認する場合に使用します。
  • gcloud config。プロジェクト ID、ゾーン、リージョンを個別に設定する場合に使用します。

gcloud init の使用

エラー One of [--zone, --region] must be supplied: Please specify location を受信した場合は、このセクションの内容を実施します。

  1. gcloud init を実行して、次の操作を行います。

    gcloud init

    リモート サーバーで SSH を使用している場合は、--console-only フラグを指定して、コマンドがブラウザを起動しないようにします。

    gcloud init --console-only
  2. 手順に従って gcloud を承認し、Google Cloud アカウントを使用します。
  3. 新しい構成を作成するか、既存の構成を選択します。
  4. Google Cloud プロジェクトを選択します。
  5. デフォルトの Compute Engine ゾーンを選択します。

gcloud config の使用

  • デフォルトのプロジェクト 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 container node-pools create コマンドを実行します。

gcloud container node-pools create POOL_NAME --cluster CLUSTER_NAME

オプションの完全なリストについては、gcloud container node-pools create のドキュメントをご覧ください。

node-pools create リクエストが正しく処理されると、ノードプール情報が返されます。

Creating node pool example-pool...done.
Created [https://container.googleapis.com/v1/projects/kubernetes-engine-docs/zones/us-central1-f/clusters/example-cluster/nodePools/example-pool].
NAME          MACHINE_TYPE   DISK_SIZE_GB  NODE_VERSION
example-pool  e2-medium      100           1.2.4

ノードプールが作成されます。ノードプールが正常に作成されても、サーバーからステータスが報告されず、gcloud コマンドがタイムアウトになる場合があります。プロビジョニングが完了していないノードプールを含め、すべてのノードプールのステータスを確認するには、次のコマンドを使用します。

gcloud container node-pools list --cluster CLUSTER_NAME

Console

既存のクラスタにノードプールを追加するには、次の手順を行います。

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

    Google Kubernetes Engine のメニューに移動

  2. 編集するクラスタの横にある [アクション] をクリックし、 [編集] をクリックします。

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

  4. 必要に応じてノードプールを構成します。

  5. [作成] をクリックしてノードプールを追加します。

クラスタのノードプールを表示する

gcloud

クラスタのすべてのノードプールを一覧表示するには、次のように gcloud container node-pools list コマンドを実行します。

gcloud container node-pools list --cluster CLUSTER_NAME

特定のノードプールの詳細を表示するには、次のように gcloud container node-pools describe コマンドを実行します。

gcloud container node-pools describe POOL_NAME \
    --cluster CLUSTER_NAME

以下を置き換えます。

  • CLUSTER_NAME: クラスタの名前。
  • POOL_NAME: 表示するノードプールの名前。

Console

クラスタのノードプールを表示するには、次の手順を行います。

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

    Google Kubernetes Engine のメニューに移動

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

  3. [ノード] タブをクリックします。

  4. [ノードプール] で、表示するノードプールの名前をクリックします。

ノードプールのサイズを変更する

gcloud

クラスタのノードプールのサイズを変更するには、gcloud container clusters resize コマンドを実行します。

gcloud container clusters resize CLUSTER_NAME --node-pool POOL_NAME \
    --num-nodes NUM_NODES

以下を置き換えます。

  • CLUSTER_NAME: サイズを変更するクラスタの名前。
  • POOL_NAME: サイズを変更するノードプールの名前。
  • NUM_NODES: ゾーンクラスタ内のプール内のノードの数。マルチゾーン クラスタまたはリージョン クラスタを使用する場合、NUM_NODES はノードプールが存在している各ゾーンのノード数です。

各ノードプールに対してこのコマンドを繰り返します。クラスタにノードプールが 1 つしかない場合は、--node-pool フラグを省略します。

Console

クラスタのノードプールのサイズを変更するには、次の手順に従います。

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

    Google Kubernetes Engine のメニューに移動

  2. 編集するクラスタの横にある [アクション] をクリックし、 [編集] をクリックします。

  3. [ノード] タブをクリックします。

  4. [ノードプール] セクションで、サイズを変更するノードプールの名前をクリックします。

  5. [Resize] をクリックします。

  6. [ノード数] フィールドに、ノードプールに含めるノード数を入力し、[サイズ変更] をクリックします。

  7. 必要に応じてノードプールごとに同じ操作を繰り返します。

ノードプールをアップグレードする

gcloud

すべてのノードをコントロール プレーンと同じバージョンに更新するには、gcloud container clusters upgrade コマンドを実行します。

gcloud container clusters upgrade CLUSTER_NAME

特定のノードプールを更新するには、--node-pool フラグを指定します。

gcloud container clusters upgrade CLUSTER_NAME --node-pool POOL_NAME

Console

ノードプールをアップグレードするには、次の手順を行います。

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

    Google Kubernetes Engine のメニューに移動

  2. 編集するクラスタの横にある [アクション] をクリックし、 [編集] をクリックします。

  3. [ノード] タブをクリックします。

  4. [ノードプール] セクションで、アップグレードするノードプールの名前をクリックします。

  5. [編集] をクリックします。

  6. [ノードのバージョン] で、[変更] をクリックします。

  7. 目的のノードのバージョンを選択します。

  8. [変更] をクリックします。

Pod を特定のノードプールにデプロイする

Pod マニフェストで nodeSelector を使用すると、Pod を特定のノードプールに明示的にデプロイできます。nodeSelector は、ラベルが一致するノードに Pod のスケジュールを設定します。

すべての GKE ノードプールには、cloud.google.com/gke-nodepool: POOL_NAME という形式のラベルがあります。 次の例に示すように、このラベルを Pod の nodeSelector フィールドに追加します。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    cloud.google.com/gke-nodepool: POOL_NAME

詳細は、ノードに Pod を割り当てるをご覧ください。

ノードセレクタの代わりに、ノード アフィニティを使用できます。Pod が制約を満たそうと試みる一方で、制約を満たせない場合でも Pod のスケジュールが設定される「ソフト」ルールを適用したい場合は、ノード アフィニティを使用します。詳細は、ノード アフィニティをご覧ください。コンテナのリソース リクエストを指定することもできます。

ノードプールを削除する

ノードプールを削除すると、ノードとそのノードへのルートが削除されます。それらのノードで実行されているポッドはすべて強制排除され、再スケジュールされます。ポッドに特定のノードセレクタが設定されており、クラスタ内の他のノードが条件を満たさない場合、そのポッドはスケジュールできない状態のままになることがあります。

gcloud

ノードプールを削除するには、gcloud container node-pools delete コマンドを実行します。

gcloud container node-pools delete POOL_NAME --cluster CLUSTER_NAME

Console

ノードプールを削除するには、次の手順を行います。

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

    Google Kubernetes Engine のメニューに移動

  2. 編集するクラスタの横にある [アクション] をクリックし、 [編集] をクリックします。

  3. [ノード] タブをクリックします。

  4. [ノードプール] セクションで、削除するノードプールの横にある をクリックします。

  5. 確認のメッセージが表示されたら [削除] をクリックします。

次のステップ