このドキュメントでは、ノードプールのサージ アップデートを有効にして管理する方法について説明します。ノードプールのサージ アップデートの仕組みについては、サージ アップデートについてをご覧ください。
サージ アップデートを実行する前に考慮すべきこと
サージ アップデートを実行する前に、次の点に留意してください。
- このサージステップの一部として作成された追加のインスタンスは、AWS インスタンスの割り当ての上限を超える可能性があります。十分な割り当てがなく、これらの追加のインスタンスをプロビジョニングできない場合は、更新が失敗する場合があります。
max-unavailable-update
が 0 に設定されている場合、Pod が排除されてより新しいノードに再スケジューリングされると、ワークロードの中断が発生する可能性がまだあります。- 同時に更新できるノードの最大数は
max-surge-update
とmax-unavailable-update
の合計で、20 に制限されています。
サージ アップデートを有効にして構成する
サージ アップデートを有効にする場合は、Google Cloud サポートにお問い合わせください。サポートチームがこの機能を有効にしたら、ノードプールの作成または更新時に max-surge-update
パラメータと max-unavailable-update
パラメータに値を割り当てることができます。
作成
gcloud container aws node-pools create NODE_POOL_NAME
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--max-surge-update MAX_SURGE \
--max-unavailable-update MAX_UNAVAILABLE
更新
gcloud container aws node-pools update NODE_POOL_NAME
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--max-surge-update MAX_SURGE \
--max-unavailable-update MAX_UNAVAILABLE
次のように置き換えます。
NODE_POOL_NAME
: 更新するノードプールの名前。CLUSTER_NAME
: クラスタの名前。GOOGLE_CLOUD_LOCATION
: クラスタを管理する、サポートされている Google Cloud リージョン。例:us-west1
MAX_SURGE
: 更新中に現在のノードプール サイズを超えて一時的に作成できる追加ノードの最大数。この値を調整することで、同時に更新されるノードの数を制御できます。デフォルト設定は 1 ですが、0 に設定することもできます。max-surge-update
を 0 より大きい値に設定すると、GKE on AWS によってサージノードが作成されます。0 に設定すると、作成されません。MAX_UNAVAILABLE
: 更新プロセス中に同時に使用不可になることが許容されるノードの最大数。この値を増やすと、同時に更新できるノードが増えます。デフォルト値は 0 ですが、値を大きくすることもできます。
ノードプールのサージ アップデートの設定を確認する
ノードプールのサージ アップデートの設定を確認するには、次のコマンドを実行します。
gcloud alpha container aws node-pools describe NODE_POOL_NAME
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
次のように置き換えます。
NODE_POOL_NAME
: ノードプールの名前。CLUSTER_NAME
: クラスタの名前。GOOGLE_CLOUD_LOCATION
: クラスタを管理する、サポートされている Google Cloud リージョン。例:us-west1
ノードプールでサージ アップデートが有効になっている場合、このコマンドの出力には surge_settings
というラベルの付いたセクションが表示されます。この surge_settings
セクションには、max_surge
と max_unavailable
のパラメータの値が表示されます。
進行中のサージ アップデートを管理する
進行中のサージ アップデートをキャンセルしたり、失敗したサージ アップデートのロールバックできます。また、中断されたアップデートを再開することもできます。
サージ アップデートをキャンセル(一時停止)して再開する
GKE on AWS でサージ アップデートの「キャンセル」とは、実際には一時停止を意味します。アップデートをキャンセルする方法について詳しくは、アップデート オペレーションをキャンセルするをご覧ください。
つまり、サージ アップデートをキャンセルしても、アップデートはロールバックされません。2 つの自動スケーリング グループ(以前の構成を実行するノードのグループと新しい構成を実行するノードのグループ)が存在し、ノードプールが部分的に更新された状態になる可能性があります。この問題を回避するには、中断されたオペレーションと同じターゲット パラメータを使用し、update コマンドを再実行してサージ アップデートを再開します。別のノードプール パラメータを使用したアップデートの開始は、前回の更新が完了するまで制限されます。
失敗したサージ アップデートをロールバックする
サージ アップデートがキャンセルされた場合や失敗した場合、ノードプールを元の状態にロールバックできます。
サージ アップデートをロールバックする前に考慮すべきこと
- ロールバックできるのは、部分的に更新された状態(または
DEGRADED
状態)にあるサージ対応のノードプールのみです。 - ノードプールでロールバックが開始した後にキャンセルすることはできません。
- ロールバック オペレーションが正常に終了するまで、追加のアップデート オペレーションは制限されます。
- ロールバックは、失敗した場合にのみ再試行できます。
- 正常に更新されたノードプールをロールバックすることはできません。
失敗したサージ アップデートをロールバックする方法
ノードプールで失敗したアップデート オペレーションをロールバックするには、次のコマンドを実行します。
gcloud container aws node-pools rollback NODE_POOL_NAME
--cluster CLUSTER_NAME
次のように置き換えます。
NODE_POOL_NAME
: 更新するノードプールの名前。CLUSTER_NAME
: クラスタの名前。
ロールバックの仕組み
内部でロールバックを開始すると、ノードプールで新しいアップデート オペレーションが開始されます。ここでの「内部」とは、このプロセスがシステム自体の内部で実行され、ユーザーの介入を必要としないことを意味します。このオペレーションは、ノードプール ノードをベスト エフォートで元の状態に戻します。
古い自動スケーリング グループに属するノードの閉鎖を解除し、このグループのクラスタ オートスケーラーを有効にして、ノードでワークロードをスケジューリングできるようにします。新しい自動スケーリング グループで部分的に更新されたノードプール ノードを、最初のサージ アップデートの試行で定義したサージ設定に基づいて閉鎖し、ドレインして終了します。
失敗したサージ アップデートを管理する
失敗したアップデートに対処する方法は 3 つあります。
- アップデートを続ける: 最初に失敗した試行と同じターゲット ノードプールの設定を使用して、失敗したアップデートを続行できます。
- ロールバック: ロールバック コマンドを使用して、ノードプールを元の状態に戻します。
- 変更して再起動する: サージ アップデートのパラメータを変更する場合は、既存のノードプールを削除してから、新しい設定で再作成する必要があります。ノードプールを削除する方法については、ノードプールを削除するをご覧ください。