プラットフォーム管理者はノードのアップグレード戦略を構成して、GKE が Google Kubernetes Engine(GKE)クラスタ内のノードをアップグレードする方法を調整できます。ノードのアップグレード戦略の詳細については、ノードのアップグレード戦略をご覧ください。
始める前に
作業を始める前に、次のタスクが完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components updateコマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。
ノードのアップグレード戦略を構成する
クラスタのノードプールを構成するときに、サポートされているノードのアップグレード戦略、すなわちサージまたは Blue/Green のいずれかを選択して構成できます。これらのアップグレード戦略を使用すると、クラスタ環境のニーズに基づいてノードプールのアップグレード プロセスを最適化できます。
サージ アップグレードを構成する
サージ アップグレードを使用すると、GKE が一度にアップグレードするノード数とアップグレードでワークロードが中断される回数を変更できます。
max-surge-upgrade フラグと max-unavailable-upgrade フラグは、ノードプールごとに定義されています。適切なパラメータの選択について詳しくは、サージ アップグレード構成を最適化するをご覧ください。
これらの設定は、クラスタやノードプールを作成または更新するときに変更できます。
後述するコマンドでは、次の変数を使用しています。
CLUSTER_NAME: ノードプールのクラスタの名前。COMPUTE_ZONE: クラスタのゾーン。NODE_POOL_NAME: ノードプールの名前。NUMBER_NODES: クラスタの各ゾーンにあるノードプール内のノード数。SURGE_NODES: ノードプールのアップグレードのたびに作成される余分な(サージ)ノードの数。UNAVAILABLE_NODES: ノードプールの各アップグレードで、同時に使用できなくなる可能性があるノードの数。
特定のパラメータでクラスタを作成する
サージ アップグレードに固有の設定でクラスタを作成するには、max-surge-upgrade フラグと max-unavailable-upgrade フラグを使用します。
gcloud container clusters create CLUSTER_NAME \
--max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODESサージ アップグレードが無効なクラスタを作成する
サージ アップグレードなしでクラスタを作成するには、max-surge-upgrade フラグの値を 0 に設定します。
gcloud container clusters create CLUSTER_NAME \
--max-surge-upgrade=0 --max-unavailable-upgrade=1特定のサージ パラメータでノードプールを作成する
サージ アップグレードに固有の設定で既存のクラスタにノードプールを作成するには、max-surge-upgrade フラグと max-unavailable-upgrade フラグを使用します。
gcloud container node-pools create NODE_POOL_NAME \
--num-nodes=NUMBER_NODES --cluster=CLUSTER_NAME \
--max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES既存のノードプールのサージ アップグレード設定を変更する
既存のノードプールのアップグレード設定を更新するには、max-surge-upgrade フラグと max-unavailable-upgrade フラグを使用します。max-surge-upgrade を 0 よりも大きい値に設定すると、GKE によってサージノードが作成されます。max-surge-upgrade を 0 に設定すると、サージノードは作成されません。
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODESノードプールでサージ アップグレードが有効になっていることを確認する
ノードプールでサージ アップグレードが有効になっていることを確認するには、gcloud を使用してクラスタのパラメータを表示します。
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAMEノードプールでサージ アップグレードが有効になっている場合、戦略は SURGE になります。
Blue/Green アップグレードを構成する
Blue/Green ノードプール アップグレードでは、次のことを制御できます。
BATCH_NODE_COUNTまたはBATCH_PERCENT: GKE が一度にドレインする(つまり、Pod がノードから削除される)ノードのバッチのサイズ。デフォルトはBATCH_NODE_COUNT=1です。いずれかの設定が 0 に設定されている場合、GKE はこのフェーズをスキップして、ノードプールのソーキング フェーズに進みます。BATCH_SOAK_DURATION: ノードの各バッチがドレインされるまでの時間。NODE_POOL_SOAK_DURATION: 新しいノード構成でワークロードを検証するためのソーク時間。
Blue/Green アップグレードのフェーズの詳細については、Blue/Green アップグレードのフェーズをご覧ください。
次のセクションで説明するコマンドでは、次の変数を使用します。
CLUSTER_NAME: ノードプールのクラスタの名前。NODE_POOL_NAME: ノードプールの名前。NUMBER_NODES: クラスタの各ゾーンにあるノードプール内のノード数。BATCH_NODE_COUNT: Blue のプールドレイン フェーズでバッチにドレインする Blue ノードの数。デフォルトは 1 です。0 に設定した場合、Blue のプールドレイン フェーズはスキップされます。BATCH_PERCENT: Blue のプールドレイン フェーズでバッチでドレインする Blue ノードの割合。0~1 の小数値で表されます。割合が整数でない場合は、GKE は最も近いノード数に切り下げます(最小値は 1 ノードです)。0 に設定した場合、Blue のプールドレイン フェーズはスキップされます。BATCH_SOAK_DURATION: 各バッチドレインの後に待機する時間(秒)。デフォルトは 0 です。NODE_POOL_SOAK_DURATION: すべてのバッチのドレインが完了した後に待機する時間(秒)。デフォルトは 3,600 秒です。
Blue/Green アップグレード戦略を使用したノードプールの作成
Blue/Green アップグレードのデフォルト パラメータを使用してノードプールを作成する
既存のクラスタで Blue/Green アップグレード戦略とデフォルト パラメータを使用してノードプールを作成するには、次のコマンドを使用します。
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-blue-green-upgrade
絶対ノード数のバッチサイズを使用して Blue/Green アップグレードでノードプールを作成する
カスタム Blue/Green アップグレード設定でノードプールを作成するには、ノードプール作成コマンドでパラメータ フラグを使用します。
このコマンドは、バッチドレインの絶対ノード数を使用して、次のカスタマイズした Blue/Green 構成でノードプールを作成します。
BATCH_NODE_COUNT= 2BATCH_SOAK_DURATION= 10 秒NODE_POOL_SOAK_DURATION= 600 秒
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-blue-green-upgrade \
--standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
--node-pool-soak-duration=600s
割合ベースのバッチサイズを使用して Blue/Green アップグレードでノードプールを作成する
このコマンドは、バッチドレインの割合を使用して、次のカスタマイズした Blue/Green 構成でノードプールを作成します。
BATCH_PERCENTAGE=(ノードプール サイズの)25%BATCH_SOAK_DURATION= 10 秒NODE_POOL_SOAK_DURATION= 1,800 秒
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-blue-green-upgrade \
--standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
--node-pool-soak-duration=1800s
既存のノードプールの Blue/Green アップグレード戦略の更新
Blue/Green アップグレードのデフォルト パラメータを使用してノードプールを更新する
既存のノードプールを Blue/Green アップグレード戦略に更新するには、次のコマンドを使用します。
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-blue-green-upgrade
絶対ノード数のバッチサイズを使用して Blue/Green アップグレードでノードプールを更新する
既存のノードプールをカスタム設定付きの Blue/Green アップグレード戦略に更新するには、ノードプール作成コマンドでパラメータ フラグを使用します。
このコマンドは、バッチドレインに絶対ノード数を使用して、次のカスタマイズした Blue/Green 構成を使用するようにノードプールを更新します。
BATCH_NODE_COUNT= 2BATCH_SOAK_DURATION= 10 秒NODE_POOL_SOAK_DURATION= 600 秒
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-blue-green-upgrade \
--standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
--node-pool-soak-duration=600s
割合ベースのバッチサイズを使用して Blue/Green アップグレードでノードプールを更新する
このコマンドは、バッチドレインの割合を使用して、次のカスタマイズした Blue/Green 構成でノードプールを作成します。
BATCH_PERCENTAGE=(ノードプール サイズの)25%BATCH_SOAK_DURATION= 10 秒NODE_POOL_SOAK_DURATION= 1,800 秒
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-blue-green-upgrade \
--standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
--node-pool-soak-duration=1800s
サージ アップグレードへの再度の切り替え
Blue/Green アップグレードの動作は、設定で変更できます。また、コマンドを使用してアップグレード プロセスを制御することもできます。
ただし、代わりにサージ アップグレードを使用する場合は、再びサージ アップグレードに切り換えます。
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-surge-upgrade
ノードプールのアップグレード設定を調べる
ノードプールの現在のアップグレード設定を調べるには、次のコマンドを使用してノードプールの詳細を取得します。
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
次のスニペットは、コマンドの出力例です。strategy フィールドは、使用中のアップグレード戦略を示します。SURGE は、サージ アップグレード戦略が有効であることを示し、BLUE_GREEN は、Blue/Green アップグレード戦略が有効であることを示します。
upgradeSettings:
blueGreenSettings:
nodePoolSoakDuration: 1800s
standardRolloutPolicy:
batchNodeCount: 1
batchSoakDuration: 10s
strategy: BLUE_GREEN
このコマンドは、進行中の Blue/Green アップグレードの現在のフェーズも表示します。詳細については、ノードプールのアップグレード設定の確認をご覧ください。
次のステップ
- ノードのアップグレード戦略について理解する。
- ノードプールを手動でアップグレードする方法を確認する。