# Kubernetes v1.37.0

> Kubernetes Core · 2026-08-26

新しい API や機能の追加に加え、スケジューリング、ノード管理、性能、正確性に関わる変更を含む大規模なリリースです。SELinux、kubelet 設定、API や feature gate の削除、非推奨インターフェースの整理、デフォルト値や検証方法の変更があるため、アップグレード前にマニフェスト、クライアント、クラスタ設定の確認が必要です。

## 要対応
- **[security]** 不正なオブジェクト削除のエッジケース修正
  - 不正なオブジェクトの削除が admission を回避し、正常なオブジェクトの graceful deletion を妨げる可能性があったエッジケースが削除されました。
- **[breaking]** `WatchListCompression` のデフォルト動作変更
  - この動作はデフォルトで有効になり、`WatchListCompression` feature gate で無効にできます。
- **[breaking]** `EtcdRangeStream` の Beta 昇格
  - `EtcdRangeStream` feature gate がデフォルトで有効になり、Beta に昇格しました。
- **[breaking]** 不正なオブジェクト削除機能の Beta 昇格
  - `AllowUnsafeMalformedObjectDeletion` feature gate が Beta に昇格し、デフォルトで有効になりました。ストレージから読み取れないオブジェクトの一覧エラーには、最初の根本原因が含まれます。
- **[breaking]** `PodLevelResourceManagers` のデフォルト無効化
  - リリース前に重大な問題が見つかったため、`PodLevelResourceManagers` feature gate はデフォルトで無効になりました。
- **[breaking]** `kube-scheduler` の CEL 評価動作変更
  - `ListTypeAttributes` feature gate が無効でも、`kube-scheduler` は list 型属性、`.includes` 関数、CEL マクロを評価するようになりました。ローリングアップグレード中や feature gate の切り替え時に発生するエラーを防ぎます。

## 影響確認
- **[security]** `kubeconfig` 移行時のパーミッション維持
  - 移行用の `kubeconfig` ファイルを設定している場合に適用されます。
  - `client-go` は `kubeconfig` ファイルの移行時に、移行元ファイルのパーミッションを維持するようになりました。移行先のパーミッションが広く設定され、同じシステム上の他ユーザーに認証情報が見える可能性があった問題を修正しています。
- **[breaking]** `SELinuxMount` のデフォルト有効化
  - SELinuxを有効にしたクラスタに適用されます。
  - `SELinuxMount` が `v1.37` でデフォルト有効になり、SELinux を有効にしたクラスタでは既存のワークロードに影響する場合があります。
- **[breaking]** Workload と PodGroup の API 昇格
  - `scheduling.k8s.io/v1alpha2` または `scheduling.k8s.io/v1beta1` を使用している場合に適用されます。
  - Workload-aware Scheduling の中核 API 型である Workload と PodGroup が `scheduling.k8s.io/v1beta1` に昇格しました。
- **[breaking]** `DisruptionMode` フィールドの型変更
  - `DisruptionMode` を使用している場合に適用されます。
  - `DisruptionMode` の enum フィールドが struct に変更され、将来の拡張に対応する形になりました。
- **[breaking]** `eventRecordQPS` の `0` の扱いを変更
  - `eventRecordQPS` を設定している場合に適用されます。
  - `kubelet` 設定の `eventRecordQPS` で、値 `0` はレート制限なしとして扱われるようになりました。
- **[breaking]** 非推奨 `cAdvisor` フラグの削除
  - `--application-metrics-count-limit`、`--boot-id-file`、`--container-hints`、`--containerd`、`--containerd-namespace`、`--enable-load-reader`、`--event-storage-age-limit`、`--event-storage-event-limit`、`--global-housekeeping-interval`、`--log-cadvisor-usage`、`--machine-id-file`、`--storage-driver-user`、`--storage-driver-password`、`--storage-driver-host`、`--storage-driver-db`、`--storage-driver-table`、`--storage-driver-secure`、`--storage-driver-buffer-duration` のいずれかを設定している場合に適用されます。
  - 非推奨の `cAdvisor` フラグは受け付けられなくなり、いずれかを設定すると `kubelet` の起動に失敗します。対象は `--application-metrics-count-limit`、`--boot-id-file`、`--container-hints`、`--containerd`、`--containerd-namespace`、`--enable-load-reader`、`--event-storage-age-limit`、`--event-storage-event-limit`、`--global-housekeeping-interval`、`--log-cadvisor-usage`、`--machine-id-file`、`--storage-driver-user`、`--storage-driver-password`、`--storage-driver-host`、`--storage-driver-db`、`--storage-driver-table`、`--storage-driver-secure`、`--storage-driver-buffer-duration` です。
- **[breaking]** `DeclarativeValidationTakeover` の設定制限
  - `DeclarativeValidationTakeover` を設定している場合に適用されます。
  - `DeclarativeValidationTakeover` は設定できなくなりました。
- **[breaking]** `PodCertificateRequest v1` のフィールド削除
  - `PodCertificateRequest v1beta1` を使用している場合に適用されます。
  - `PodCertificateRequest` の `v1beta1` で非推奨だった `PKIXPublicKey` と `ProofOfPossession` が `v1` API から削除されました。
- **[breaking]** `PKIXPublicKey` と `ProofOfPossession` の削除
  - `PKIXPublicKey` または `ProofOfPossession` を使用している場合に適用されます。
  - `PKIXPublicKey` と `ProofOfPossession` が `v1` API から削除されました。
- **[breaking]** `HostnameOverride` の有効固定
  - `HostnameOverride` を設定している場合に適用されます。
  - `HostnameOverride` feature gate は有効に固定されました。
- **[breaking]** `DRAPlugin.WatchHealthStatus` の必須化
  - `DRAPlugin.WatchHealthStatus` を使用している場合に適用されます。
  - `DRAPlugin.WatchHealthStatus` が必須メソッドになりました。
- **[breaking]** スケジューリング feature gate の整理
  - `GangScheduling` または `WorkloadAwarePreemption` を設定している場合に適用されます。
  - `GangScheduling` と `WorkloadAwarePreemption` feature gate が削除され、`GenericWorkload` feature gate を使用する形になりました。
- **[breaking]** `AnyVolumeDataSource` の削除
  - `AnyVolumeDataSource` を設定している場合に適用されます。
  - 一般提供されていた `AnyVolumeDataSource` feature gate が削除されました。
- **[breaking]** Admission Webhook のリクエスト負荷分散
  - `--enable-aggregator-routing=true` を設定している場合に適用されます。
  - `--enable-aggregator-routing=true` の `kube-apiserver` で、Admission Webhook へのリクエストがエンドポイント間で均等に負荷分散されるようになりました。接続キャッシュによって同時リクエストが単一のバックエンドに集中することを防ぎます。`WebhookRoundTripLoadBalancing` feature gate で一時的に従来の動作へ戻せます。
- **[breaking]** `HorizontalPodAutoscaler` のゼロスケール対応
  - `HorizontalPodAutoscaler`（HPA）を使用している場合に適用されます。
  - `HorizontalPodAutoscaler` は、ゼロへのスケールとゼロからのスケールがデフォルトで有効になりました。
- **[breaking]** `MaxUnavailableStatefulSet` のデフォルト有効化
  - `MaxUnavailableStatefulSet` を使用している場合に適用されます。
  - `MaxUnavailableStatefulSet` feature がデフォルトで有効になりました。
- **[breaking]** Admission Webhook の仮想リソース除外
  - Admission Webhook を使用している場合に適用されます。
  - Admission Webhook が、`tokenreviews` や `subjectaccessreviews` など、認証および認可用の仮想リソースをスキップするようになりました。`ExcludeAdmissionWebhookVirtualResources` feature gate は Beta でデフォルト有効です。
- **[breaking]** `kubeadm` の `NodeLocalCRISocket` 削除
  - `kubeadm` を実行している場合に適用されます。
  - `kubeadm` から、GA に昇格して以前のリリースでデフォルト有効に固定されていた `NodeLocalCRISocket` feature gate が削除されました。
- **[breaking]** `HPAOptimizedSelectorStore` の追加
  - HorizontalPodAutoscaler controller を実行している場合に適用されます。
  - `HPAOptimizedSelectorStore` feature gate が Beta で追加され、デフォルトで有効になりました。HorizontalPodAutoscaler controller の selector 重複検出におけるロック競合を減らし、HPA 数と同時実行数が多い環境で調整処理のスループットを高めます。
- **[breaking]** `kubectl get` の `--label-columns` 検証変更
  - `--label-columns` を設定している場合に適用されます。
  - `kubectl get` は、custom-columns 出力と `--label-columns` を同時に使用するとエラーを返すようになりました。
- **[breaking]** 空の `image.reference` の拒否
  - `image.reference` を設定している場合に適用されます。
  - イメージボリュームの検証で、Pod template 内の空の `image.reference` フィールドを拒否するようになりました。対象には Deployment、StatefulSet、DaemonSet、Job などがあります。
- **[breaking]** `kubelet` ログエンドポイントのメソッド制限
  - `kubelet` を実行している場合に適用されます。
  - `kubelet` はログ関連エンドポイントの HTTP メソッドを明示的に制限します。読み取り専用の `kubelet` サーバーエンドポイントは GET 以外を 405 で拒否し、`NodeLogQuery` は GET と POST のみ受け付けます。
- **[breaking]** nftables モードの netlink サポート
  - `kube-proxy` の nftables モードを実行している場合に適用されます。
  - `kube-proxy` の nftables モードで、netlink サポートがデフォルトで有効になりました。
- **[breaking]** Alpha admission plugin の削除
  - Alpha admission plugin を使用している場合に適用されます。
  - PodGroup が既存の Workload を参照し、宣言された PodGroupTemplate spec と一致することを検証していた Alpha admission plugin が削除されました。
- **[breaking]** Node ネットワーク変更時の `kube-proxy` 再起動
  - `kube-proxy` を実行している場合に適用されます。
  - 監視対象の Node の IP が変わるか、Node オブジェクトが削除されると、`kube-proxy` が終了するようになりました。更新されたノードネットワーク状態で再起動できます。
- **[breaking]** hugepages を考慮した `memory.available` の計算
  - ノードが hugepages を使用している場合に適用されます。
  - hugepages を持つノードでは、`kubelet` の eviction manager が `memory.available` の計算で hugepage 用に予約された RAM を `AvailableBytes` から除外するようになりました。`HugepageAwareEviction` feature gate はデフォルトで有効です。
- **[breaking]** `DRAPrioritizedList` の有効固定
  - DRA を使用している場合に適用されます。
  - DRA の `DRAPrioritizedList` feature gate はデフォルト有効に固定されました。この機能は `v1.36` で GA に到達しており、無効化できません。
- **[breaking]** `RelaxedDNSSearchValidation` の削除
  - `RelaxedDNSSearchValidation` を設定している場合に適用されます。
  - `RelaxedDNSSearchValidation` feature gate が削除されました。
- **[breaking]** GA feature gate の削除
  - `RetryGenerateName`、`BtreeWatchCache`、`OrderedNamespaceDeletion`、`StreamingCollectionEncodingToJSON`、`StreamingCollectionEncodingToProtobuf`、`APIServerTracing`、`ResilientWatchCacheInitialization`、`ConsistentListFromCache` のいずれかを設定している場合に適用されます。
  - GA に固定されていた `RetryGenerateName`、`BtreeWatchCache`、`OrderedNamespaceDeletion`、`StreamingCollectionEncodingToJSON`、`StreamingCollectionEncodingToProtobuf`、`APIServerTracing`、`ResilientWatchCacheInitialization`、`ConsistentListFromCache` の feature gate が削除されました。
- **[breaking]** `--concurrent-service-syncs` の削除
  - `--concurrent-service-syncs` を設定している場合に適用されます。
  - `kube-controller-manager` の `--concurrent-service-syncs` フラグが削除されました。これは `v1.31` 以降、何も動作しないフラグでした。
- **[breaking]** Static Pod の API リソース参照制限
  - `PreventStaticPodAPIReferences` を設定している場合に適用されます。
  - `PreventStaticPodAPIReferences` feature gate が削除され、Static Pod は API リソースを参照できなくなりました。この動作は無効化できません。
- **[breaking]** `SidecarContainers` の削除
  - `SidecarContainers` を設定している場合に適用されます。
  - `v1.33` 以降、無条件で有効だった `SidecarContainers` feature gate が削除されました。
- **[breaking]** キャッシュ一覧メトリクスの削除
  - `apiserver_cache_list_total`、`apiserver_cache_list_fetched_objects_total`、`apiserver_cache_list_returned_objects_total` のいずれかを使用している場合に適用されます。
  - 非推奨の Alpha メトリクス `apiserver_cache_list_total`、`apiserver_cache_list_fetched_objects_total`、`apiserver_cache_list_returned_objects_total` は、デフォルトでは公開されなくなりました。利用側は `storage="watchcache"` ラベル付きの統合メトリクス `apiserver_storage_list_*` へ移行します。
- **[breaking]** `DefaultWatchCacheSize` の削除
  - `DefaultWatchCacheSize` を設定している場合に適用されます。
  - `k8s.io/apiserver/pkg/server/options.EtcdOptions` の、何も動作しない `DefaultWatchCacheSize` フィールドが削除されました。
- **[breaking]** `kubeadm` の `v1beta3` API と `PublicKeysECDSA` の削除
  - `v1beta3` API を使用しているか、`PublicKeysECDSA` を設定している場合に適用されます。
  - `kubeadm` の `v1beta3` API が削除されました。`v1.35` の `kubeadm` バイナリでは `kubeadm config migrate` を使って `v1beta4` へ移行できます。`v1beta3` との後方互換性のために残されていた `PublicKeysECDSA` feature gate も削除され、ECDSA キーのサポートは `v1beta4` の `ClusterConfiguration.EncryptionAlgorithm` に含まれます。実験的でまだ使用できない、`v1beta4` のコピーであるプレースホルダー API `v1` も追加されました。

## 事前準備
- **[deprecated]** `kube-proxy` ipvs モードの非推奨化
  - `kube-proxy` の ipvs モードを実行している場合に適用されます。
  - v1.35から
  - `kube-proxy` の ipvs モードは `v1.35` から非推奨です。
- **[deprecated]** `v1alpha1 DRAResourceHealth` API の非推奨化
  - `v1alpha1 DRAResourceHealth` API を使用している場合に適用されます。
  - v1.40で削除予定
  - `v1alpha1 DRAResourceHealth` API は非推奨となり、`v1.40` での削除が予定されています。
- **[deprecated]** `kubectl run` の `--filename` と `-f` の非推奨化
  - `--filename` または `-f` を設定している場合に適用されます。
  - `kubectl run` で無視されていた `--filename` と `-f` フラグが非推奨になりました。
- **[deprecated]** `client-go` の従来 API の非推奨化
  - 適用対象はリリースノートに明記されていません。
  - 従来の API は非推奨として扱われますが、削除の予定はありません。
- **[deprecated]** leader election resourcelock の API 非推奨化
  - `MultiLock`、`UnknownLeader`、`ConcatRawRecord` のいずれかを使用している場合に適用されます。
  - client-go の leader election resourcelock パッケージで、`MultiLock`、`UnknownLeader`、`ConcatRawRecord` が非推奨になりました。

## その他の記録された変更
- 403 (value_changed 171, defect_corrected 123, added 75, constraint_changed 17, default_changed 10, renamed 5, removed 2)

[分析の詳細](https://ratatosk.io/ja/releases/kubernetes/v1.37.0)

[元のリリースノート](https://github.com/kubernetes/kubernetes/releases/tag/v1.37.0)
