プラットフォーム管理者はノードのアップグレード戦略を構成して、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-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 アップグレードの現在のフェーズも表示します。詳細については、ノードプールのアップグレード設定の確認をご覧ください。
次のステップ
- ノードのアップグレード戦略について理解する。
- ノードプールを手動でアップグレードする方法を確認する。