このドキュメントでは、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,...]: 新しい Node Taints(例:key1=val1:NoSchedule,key2=val2:PreferNoSchedule)。CLUSTER_NAME: クラスタの名前。CONTROL_PLANE_LOCATION: クラスタのコントロール プレーンの Compute Engine のロケーション。リージョン クラスタの場合はリージョン、ゾーンクラスタの場合はゾーンを指定します。
アーキテクチャの taint の更新
他の GKE マネージド システムの taint と同様に、Arm ノードの kubernetes.io/arch=arm64:NoSchedule などのアーキテクチャの taint は、カスタム ノードの taint とは異なる方法で管理され、前述の手順では削除できません。ただし、アーキテクチャの taint は変更できます。詳細については、デフォルトの Arm アーキテクチャの
taintを構成するをご覧ください。