StatefulSet Parallel管理のmaxUnavailableリグレッション修正
概要
Parallel Pod管理ポリシーを使用するStatefulSetが、古いリビジョンからの利用不可Podを maxUnavailable の予算に対して誤ってカウントしていたv1.35のリグレッションが修正されました。
背景
StatefulSetはPodに安定したネットワークIDとストレージを提供するワークロードリソースです。通常は順番に(1つずつ)Podを更新しますが、podManagementPolicy: Parallel を設定すると複数のPodを同時に更新できます。
maxUnavailable は、ローリングアップデート中に同時に利用不可にできるPodの最大数を制限するパラメータです。
詳細
v1.35で導入されたバグ:
Parallel Pod管理モードで、まだ古いリビジョン(更新前のバージョン)で動作しているPodが利用不可の状態にある場合、それらが新しいリビジョンの maxUnavailable カウントに含まれてしまっていました。
これにより、まだ更新を開始していない古いPodの利用不可状態が、新しいPodのローリングアップデートを不必要にブロックするという問題が発生していました。
修正内容:
maxUnavailable のカウントを行う際に、対象を正しい(現在の)リビジョンのPodのみに限定するよう修正されました。