このページでは、Google Kubernetes Engine(GKE)Standard クラスタで、既存のノードプールのノードラベルと Node Taints を動的に更新する方法について説明します。
GKE Autopilot クラスタまたは GKE Standard クラスタでネットワーク タグを動的に適用および更新することもできます。手順については、ネットワーク タグを使用してノードにファイアウォール ルールを適用するをご覧ください。
概要
ノードの Taints とラベルは、Kubernetes ノードのオブジェクト メタデータにあります。ラベルは特定のノード上の Pod をスケジュールするために使用されます。Taints を使用すると、Pod をノードから分離できます。
Kubernetes Engine API を使用すると、ノードプールの再作成も、実行中のワークロードの中断も行わずに、既存の GKE ノードプールのノードラベル、Node Taints に対する更新を適用できます。更新されたノードプールの構成は GKE に保持されるため、将来のノードプールのアップグレードとノードプールでの新しいノードのプロビジョニングで新しい構成が使用されるようになります。
制限事項
Kubernetes Engine API を使用したノードプール構成の動的な更新には、いくつかの制限事項があります。
- ノードプールのバージョンは 1.19.7-gke.1500 以降である必要があります。
- クラスタ オートスケーラーが有効な既存のノードプールのノードラベルまたはノード taint に更新を適用するには、クラスタのコントロール プレーンのバージョンが 1.23.4-gke.300 以降である必要があります。以前のバージョンのクラスタの場合は、ノードプールで自動スケーリングを無効にしてから、ノードラベルや taint を更新するという回避策があります。更新を適用後、自動スケーリングを再度有効にします。
ノードラベルの更新
ノードプールのノードラベルを更新するには、次のコマンドを使用します。
gcloud container node-pools update NODEPOOL_NAME \
--node-labels=[NODE_LABEL,...] \
[--cluster=CLUSTER_NAME] [--region=REGION | --zone=ZONE]
[GCLOUD_WIDE_FLAG …]
次のように置き換えます。
NODEPOOL_NAME
: 更新するノードプールの名前。[NODE_LABEL,...]
: 目的の新しいノードラベル(たとえば、label1=value1,label2=value2
)。CLUSTER_NAME
: クラスタの名前。REGION
: クラスタの Compute Engine のリージョン。ZONE
: クラスタの Compute Engine ゾーン。
Node Taints の更新
ノードプールの Node Taints を更新するには、次のコマンドを使用します。
gcloud container node-pools update NODEPOOL_NAME \
--node-taints=[NODE_TAINT,...] \
[--cluster=CLUSTER_NAME] [--region=REGION | --zone=ZONE]
[GCLOUD_WIDE_FLAG …]
次のように置き換えます。
NODEPOOL_NAME
: 更新するノードプールの名前。[NODE_TAINT,...]
: 目的の新しい Node Taints(たとえば、key1=val1:NoSchedule,key2=val2:PreferNoSchedule
)。CLUSTER_NAME
: クラスタの名前。REGION
: クラスタの Compute Engine のリージョン。ZONE
: クラスタの Compute Engine ゾーン。