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 に追加されました:

  • DisruptionBudgetNegativeAllowedDisruptionsDisruptionsAllowed が負の値の場合
  • PDBの DisruptedPods マップが大きすぎる場合のエラー

クライアントはこれらの値を使って、PDBの状態に関する Forbidden エラーをプログラムで正確に識別できます。

使用例

カスタムコントローラーやCluster Autoscalerなど、Evictionを実行するツールがより正確にエラー処理を行えるようになります。

参考リンク