概要
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.34とrelease-1.33にチェリーピックされています。
2) SimulateNodeRemoval のpanic修正(scale-down系の堅牢化)
clusterSnapshotに対象ノードのNodeInfoが存在しないケースで、SimulateNodeRemovalが nil dereference し得る問題を修正。clusterSnapshot.GetNodeInfoが失敗したら早期returnし、UnremovableReasonにNoNodeInfoを追加して「削除不可」として扱うようにしています(テスト追加あり)。
3) Azure関連(テスト/LTS、静的SKU更新)
- Azureのcluster-autoscalerテストで、AKSのLTS向けパラメータ(例:
sku.tierやsupportPlan)をテンプレートに追加。 - Azureの静的SKUリストを再生成し、新しめのSKU family(例:
StandardDsv6Familyなど)を反映。
4) Kubernetes依存の更新(パッチ追従)
1.34.2は Kubernetes libraries を1.34.1 -> 1.34.2に更新。1.33.3は1.33.6に更新。1.32.5は1.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系のどのタグに修正が入っているかを別途確認が必要です(未確認)。
- scheduling gate を使うワークロードがある環境では、
- 利用者(アプリ開発者):
.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がシミュレーションに使うクラスタ状態スナップショット。
参考リンク
- https://lwkd.info/2025/20251203
- https://github.com/kubernetes/autoscaler/releases/tag/cluster-autoscaler-1.34.2
- https://github.com/kubernetes/autoscaler/releases/tag/cluster-autoscaler-1.33.3
- https://github.com/kubernetes/autoscaler/releases/tag/cluster-autoscaler-1.32.5
- https://github.com/kubernetes/autoscaler/pull/8580
- https://github.com/kubernetes/autoscaler/pull/8643
- https://github.com/kubernetes/autoscaler/pull/8644
- https://github.com/kubernetes/autoscaler/pull/8449
- https://github.com/kubernetes/autoscaler/pull/8695
- https://github.com/kubernetes/autoscaler/pull/8696
- https://github.com/kubernetes/autoscaler/pull/8697
- https://github.com/kubernetes/autoscaler/pull/8857
- https://github.com/kubernetes/autoscaler/pull/8860
- https://github.com/kubernetes/autoscaler/pull/8862
- https://github.com/kubernetes/autoscaler/pull/8722
- https://github.com/kubernetes/autoscaler/pull/8728
- https://github.com/kubernetes/autoscaler/pull/8507
- https://github.com/kubernetes/autoscaler/pull/8812
- https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/
- https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/
- https://kubernetes.io/docs/concepts/scheduling-eviction/pod-scheduling-readiness/
- https://kubernetes.io/blog/2022/12/26/pod-scheduling-readiness-alpha/
- https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/3521-pod-scheduling-readiness/README.md