このドキュメントでは、Google Kubernetes Engine(GKE)Standard クラスタ内にある既存のノードプールについて、GKE API を使って Kubernetes のノードラベルとノード taint を更新する方法を説明します。Kubernetes のノードラベルは、GKE のクラスタとノードラベルとは異なるものです。
ノードの taint とラベルは、Kubernetes ノードのオブジェクト メタデータ内にあります。Kubernetes のラベルは、特定のノードで Pod をスケジュールするために使用されます。一方、taint を使用すると、Pod を特定のノードから分離できます。詳細については、GKE でワークロードの分離を構成するをご覧ください。
GKE API を使用すると、ノードプールを再作成したり、実行中のワークロードを中断したりすることなく、既存の GKE ノードプールの Kubernetes ノードラベルとノード taint に対する更新を適用できます。更新されたノードプールの構成は GKE に保持されるため、将来そのノードプールをアップグレードするときや、新しいノードがプロビジョニングされるときは、その新しい構成が使用されます。
変更が GKE クラスタのオペレーションに与える影響については、クラスタのライフサイクルの変更を管理して中断を最小限に抑えるをご覧ください。特定の変更の詳細については、GKE クラスタの変更の種類セクションをご覧ください。
ラベルの構文
Kubernetes ラベルは、次の要件をすべて満たしている必要があります。
- ラベルのキーと値は、構文と文字セットの要件を満たしている必要があります。
--node-labelsgcloud CLI フラグで指定する値の長さは、1,024 文字以下にする必要があります。
始める前に
作業を始める前に、次のタスクが完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API を有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。gcloud CLI をインストール済みの場合は、
gcloud components updateコマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。
ノードラベルの更新
ノードプールのノードラベルを更新するには、次のコマンドを使用します。
gcloud container node-pools update NODEPOOL_NAME \
--node-labels=[NODE_LABEL,...] \
--cluster=CLUSTER_NAME
--location=CONTROL_PLANE_LOCATION
[GCLOUD_WIDE_FLAG …]
次のように置き換えます。
NODEPOOL_NAME: 更新するノードプールの名前。[NODE_LABEL,...]: 新しいノードラベル(例:label1=value1,label2=value2)。CLUSTER_NAME: クラスタの名前。CONTROL_PLANE_LOCATION: クラスタのコントロール プレーンの Compute Engine のロケーション。リージョン クラスタの場合はリージョン、ゾーンクラスタの場合はゾーンを指定します。
Node Taints の更新
ノードプールの Node Taints を更新するには、次のコマンドを使用します。
gcloud container node-pools update NODEPOOL_NAME \
--node-taints=[NODE_TAINT,...] \
--cluster=CLUSTER_NAME
--location=CONTROL_PLANE_LOCATION
[GCLOUD_WIDE_FLAG …]
次のように置き換えます。
NODEPOOL_NAME: 更新するノードプールの名前。[NODE_TAINT,...]: 新しいノードの Taints(例:key1=val1:NoSchedule,key2=val2:PreferNoSchedule)。CLUSTER_NAME: クラスタの名前。CONTROL_PLANE_LOCATION: クラスタのコントロール プレーンの Compute Engine のロケーション。リージョン クラスタの場合はリージョン、ゾーンクラスタの場合はゾーンを指定します。