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


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

始める前に

作業を始める前に、次のことを確認してください。

  • Google Kubernetes Engine API を有効にします。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化します。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得します。

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

クラスタのノードプールを構成するときに、サポートされているノードのアップグレード戦略、すなわちサージまたは 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-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 の小数値で表されます。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

ノードプールのアップグレード設定を調べる

ノードプールの現在のアップグレード設定を調べるには、次のコマンドを使用してノードプールの詳細を取得します。

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 アップグレードの現在のフェーズも表示します。詳細については、ノードプールのアップグレード設定の確認をご覧ください。

次のステップ