プラットフォーム管理者はノードのアップグレード戦略を構成して、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 アップグレードを使用するには、クラスタのコントロール プレーンでバージョン 1.34.0-gke.2201000 以降が実行され、クラスタ オートスケーラーが有効になっている必要があります。
ノードのアップグレード戦略を構成する
クラスタのノードプールを構成するときに、次のサポートされているノードのアップグレード戦略を選択して構成できます。
これらのアップグレード戦略を使用すると、クラスタ環境のニーズに基づいてノードプールのアップグレード プロセスを最適化できます。
サージ アップグレードを構成する
サージ アップグレードを使用すると、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
自動スケーリングされる Blue/Green アップグレードを構成する
自動スケーリングされる Blue / Green アップグレードをノードプールに使用する場合、バッチサイズやソーキングの追加パラメータを構成する必要はありません。ただし、ノードの閉鎖とドレインの間の時間を構成することはできます。このアップグレード戦略を有効にする前に、ベスト プラクティスと制限事項を確認してください。
自動スケーリングされる Blue/Green アップグレードを使用するノードプールを作成する
自動スケーリングされる Blue/Green アップグレードを有効にしたノードプールを作成します。
gcloud container node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--enable-autoscaling \
--max-nodes=MAX_NODES \
--enable-blue-green-upgrade \
--autoscaled-rollout-policy=[wait-for-drain-duration=WAIT_FOR_DRAIN_DURATIONs]
MIN_NODE パラメータと MAX_NODE パラメータを設定するには、クラスタとノードプールを構成する方法の推奨事項をご覧ください。
省略可能な WAIT_FOR_DRAIN_DURATION パラメータは、Blue プールを閉鎖してからノードをドレインするまでの待機時間(秒単位)に置き換えます。この時間は 0~7 日の範囲で構成できます。デフォルトは 3 日(259200 秒)です。
自動スケーリングされる Blue/Green アップグレードを使用するようにノードプールを更新する
自動スケーリングされる Blue/Green アップグレードを使用するように、既存のノードプールを更新します。
gcloud container node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--enable-blue-green-upgrade \
--autoscaled-rollout-policy=[wait-for-drain-duration=WAIT_FOR_DRAIN_DURATIONs]
省略可能な WAIT_FOR_DRAIN_DURATION パラメータは、Blue プールを閉鎖してからノードをドレインするまでの待機時間(秒単位)に置き換えます。この時間は 0~7 日の範囲で構成できます。デフォルトは 3 日(259200 秒)です。
ノードプールのアップグレード設定を調べる
ノードプールの現在のアップグレード設定を調べるには、次のコマンドを使用してノードプールの詳細を取得します。
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
次のスニペットは、コマンドの出力例です。strategy フィールドは、使用中のアップグレード戦略を示します。
- SURGE は、サージ アップグレード戦略が有効であることを示します。
BLUE_GREEN は、Blue/Green アップグレード戦略が有効であることを示します。
- 出力に
blueGreenSettingsのstandardRolloutPolicyの値が含まれている場合、標準の Blue/Green アップグレードが有効です。 autoscaledRolloutPolicyが指定されている場合は、自動スケーリングされる Blue/Green アップグレードが有効です。
- 出力に
upgradeSettings:
blueGreenSettings:
nodePoolSoakDuration: 1800s
standardRolloutPolicy:
batchNodeCount: 1
batchSoakDuration: 10s
strategy: BLUE_GREEN
このコマンドは、進行中の Blue/Green アップグレードの現在のフェーズも表示します。詳細については、ノードプールのアップグレード設定の確認をご覧ください。
次のステップ
- ノードのアップグレード戦略について理解する。
- ノードプールを手動でアップグレードする方法を確認する。