ノードプールはデフォルトで並列処理によって更新されます。これにより、次の 2 つの問題が発生する可能性があります。
割り当てに関する問題
ノードプールごとに 1 個のサージノードが作成されるため、N 個のノードプールを並行して更新するとき、N 個のサージノードが作成されます。これらのサージノードを作成するための容量が制限されている場合は、リソース不足になる可能性があります。
PDB デッドロックの問題
複数のノードを同時にドレインすると、PDB デッドロックが発生する可能性があります。
N 個のノードプールを並行して更新するには、サージノードに使用できる追加の IP アドレスが N 個必要です。ワーカーノードが DHCP サーバーから IP アドレスを取得する場合、DHCP サーバーは N 個の追加 IP アドレスを提供する必要があります。ワーカーノードが静的 IP アドレスを使用する場合は、IP ブロック ファイルに、ワーカーノードに必要な IP アドレスに加えて、N 個の追加の IP アドレスを含める必要があります。
すべての N ノードを並行して更新するのに十分な追加の IP アドレスがない場合は、できるだけ多くのプールを並行して更新します。IP アドレスが使用可能になり次第、残りのノードプールを更新します。
このドキュメントでは、ノードプールの更新ポリシーで、ノードプールの更新時に同時に更新されるノードの最大数を構成するように指定する方法について説明します。こうすることで、前述の 2 つの問題を回避できます。0 は、現在の並列動作を保持することを意味します(デフォルト値)。1 は、ノードプールを順番に更新することを意味します。
順次更新では 2 つの問題を回避できますが、ノードプールの更新プロセスが並行更新よりも長時間を要する可能性があります。
ノードプールの更新ポリシーを構成する
ユーザー クラスタのシード構成 user-cluster.yaml で、次のようにノードプールの更新が順次実行されるように構成できます。
nodePoolUpdatePolicy: maximumConcurrentNodePoolUpdate: 1
maximumConcurrentNodePoolUpdate
は任意の整数値に設定して、同時に更新するノードプールの数を構成できます。
ノードプールの更新ポリシーは、ノードプールの更新とアップグレードの両方に適用されますが、作成には適用されません。また、ノードプールの更新 / アップグレードで問題が発生した場合、現在、この動作はノードプールをブロックし、次のノードプールの更新に進めません。