Eviction APIにPDB関連の構造化CauseTypeを追加
概要
Eviction APIが PodDisruptionBudget (PDB) 関連の Forbidden エラーに構造化された CauseType 値を含めるようになりました。これにより、クライアントはメッセージ文字列をパースすることなく、PDBエラーの種別を判別できます。
背景
PodDisruptionBudget (PDB) は、メンテナンスやアップグレード中に特定のPodが同時に停止される数を制限するKubernetesの仕組みです。たとえば「このDeploymentは常に最低3つのPodが稼働していること」というルールをPDBで定義できます。
Eviction(立ち退き) は、ノードのメンテナンス時などにPodを安全に別のノードに移動させる操作です。PDBのルールに違反するEvictionリクエストは 403 Forbidden エラーで拒否されます。
詳細
以前の問題:
403 Forbidden エラーが返ってきた場合、それがPDB違反によるものなのか、他の理由によるものなのかを判別するには、エラーメッセージの文字列をパースするしかありませんでした。文字列マッチングは脆弱でメンテナンス性も低い方法です。
改善内容:
新たに2つの CauseType 定数が policy/v1 に追加されました:
DisruptionBudgetNegativeAllowedDisruptions—DisruptionsAllowedが負の値の場合- PDBの
DisruptedPodsマップが大きすぎる場合のエラー
クライアントはこれらの値を使って、PDBの状態に関する Forbidden エラーをプログラムで正確に識別できます。
使用例
カスタムコントローラーやCluster Autoscalerなど、Evictionを実行するツールがより正確にエラー処理を行えるようになります。