ノードのアップグレード戦略を構成する

プラットフォーム管理者はノードのアップグレード戦略を構成して、Google Kubernetes Engine(GKE)がクラスタ内のノードをアップグレードする方法を調整できます。ノードのアップグレード戦略の詳細については、ノードのアップグレード戦略をご覧ください。

始める前に

作業を始める前に、次のタスクが完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。gcloud CLI をインストール済みの場合は、gcloud components update コマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。

要件

ノードのアップグレード戦略を構成する

クラスタのノードプールを構成するときに、次のサポートされているノードのアップグレード戦略を選択して構成できます。

これらのアップグレード戦略を使用すると、クラスタ環境のニーズに基づいてノードプールのアップグレード プロセスを最適化できます。

サージ アップグレードを構成する

サージ アップグレードを使用すると、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-upgrade0 よりも大きい値に設定すると、GKE によってサージノードが作成されます。max-surge-upgrade0 に設定すると、サージノードは作成されません。

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 = 2
  • BATCH_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 = 2
  • BATCH_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 フィールドは、使用中のアップグレード戦略を示します。

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

このコマンドは、進行中の Blue/Green アップグレードの現在のフェーズも表示します。詳細については、ノードプールのアップグレード設定の確認をご覧ください。

次のステップ