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のみに限定するよう修正されました。

参考リンク