概要

LWKD(Week Ending November 30, 2025)で、cluster-autoscaler のパッチリリース 1.34.2 / 1.33.3 / 1.32.5 が「共通の修正で各ブランチを整合」したものとして紹介されています。主なポイントは、scheduling-gated Pod(スケジューリングゲート付きPod)に対する proactive scale-up の扱い改善SimulateNodeRemoval のpanic回避、Azure関連のテスト/静的SKU更新、CI整理、Kubernetes依存更新です。

変更内容(何が変わったか)

1) scheduling-gated Pod に対する proactive scale-up の修正(主題)

  • cluster-autoscaler の proactive scale-up(コントローラの desired replica を見て「fake pod」を注入し、実Podが作られる前からスケールアップを先回りする仕組み)で、scheduling-gated Pod を考慮せず fake pod を注入してしまう不具合が修正されました。
  • 具体的には、AllPodLister().List() で取得した全Podから PodScheduled=False かつ Reason=PodReasonSchedulingGated を満たす Pod を抽出し、コントローラ単位の集計(fake pod数計算)に組み込むことで、ゲートで意図的に止めているPodの分まで「不足」と誤認してfake podを増やさないようにしています(helperとして SchedulingGatedPods / isSchedulingGated を追加しテストも追加)。
  • この修正は upstream PR で入り、release-1.34release-1.33 にチェリーピックされています。

2) SimulateNodeRemoval のpanic修正(scale-down系の堅牢化)

  • clusterSnapshot に対象ノードの NodeInfo が存在しないケースで、SimulateNodeRemoval が nil dereference し得る問題を修正。
  • clusterSnapshot.GetNodeInfo が失敗したら早期returnし、UnremovableReasonNoNodeInfo を追加して「削除不可」として扱うようにしています(テスト追加あり)。

3) Azure関連(テスト/LTS、静的SKU更新)

  • Azureのcluster-autoscalerテストで、AKSのLTS向けパラメータ(例: sku.tiersupportPlan)をテンプレートに追加。
  • Azureの静的SKUリストを再生成し、新しめのSKU family(例: StandardDsv6Family など)を反映。

4) Kubernetes依存の更新(パッチ追従)

  • 1.34.2 は Kubernetes libraries を 1.34.1 -> 1.34.2 に更新。
  • 1.33.31.33.6 に更新。
  • 1.32.51.32.10 に更新。

※注意:LWKDの箇条書きでは3ブランチに共通修正がある旨がまとめられていますが、1.32.5 のリリースノートには scheduling-gated Pod の proactive scale-up 修正は明示されていません(少なくとも当該タグの “What’s Changed” には載っていない)。

背景(なぜこの変更が必要か)

  • Kubernetesには、Podの .spec.schedulingGates により「ゲートが外れるまでスケジューラがPodをスケジューリングしない」仕組みがあります(PodSchedulingReadiness)。
  • この仕組みを使うと、Podが作成されても意図的にスケジューリングを止められます。一方で cluster-autoscaler の proactive scale-up は「望まれるレプリカ数」と「既に存在する(scheduled/unschedulable等の)Pod数」の差分から fake pod を作って先回りスケールアップするため、scheduling-gated Pod を差分計算から除外してしまうと、毎ループで fake pod を過剰に注入し続け、結果として不要なスケールアップ/余剰キャパシティを温存し得る、という動機がPRで説明されています。

影響(運用者/利用者/開発者への影響、注意点、移行)

  • 運用者:
    • scheduling gate を使うワークロードがある環境では、cluster-autoscaler 1.34.2 または 1.33.3 への更新で 意図しないノード増加や余剰ノードの温存を抑えられる可能性があります。
    • SimulateNodeRemoval のpanic修正は、特定条件でのスケールダウン系処理の安定性に寄与します(1.34.2/1.33.3/1.32.5 いずれも該当修正を含む)。
    • 1.32 系で scheduling-gated の proactive scale-up 問題が気になる場合、1.32.5 だけで直るとは断言できないため、1.32 系のどのタグに修正が入っているかを別途確認が必要です(未確認)。
  • 利用者(アプリ開発者):
    • .spec.schedulingGates により意図的に止めているPodは、CA側でも「今すぐスケールアップして解決すべき不足」として扱われにくくなります。ゲート解除の設計(いつ/誰が外すか)を前提に運用してください。
  • 開発者:
    • scheduling-gated 判定ロジックとテストが追加され、proactive scale-up周りの振る舞いが明確化されています。

用語メモ(用語の軽い説明)

  • schedulingGates:Podの .spec.schedulingGates。空になるまでスケジューラがPodをスケジューリングしない。
  • PodSchedulingReadiness:scheduling gate 機能(KEP-3521)。
  • proactive scale-up:CAがコントローラのdesired数から「fake pod」を注入して先回りでスケールアップ判断する仕組み。
  • fake pod:CA内部で不足分を表現するために作る擬似Pod。
  • clusterSnapshot:CAがシミュレーションに使うクラスタ状態スナップショット。

参考リンク