# Kubernetes v1.37.0

> Kubernetes Core · 2026-08-26

새 기능과 API 확장, 스케줄링 및 노드 동작 개선, 성숙도 승격, 정확성 및 성능 수정이 폭넓게 포함된 주요 API 릴리스입니다. SELinux와 `kubelet` 설정 변경, API 및 기능 게이트 제거, 사용 중단된 인터페이스 정리, 기본값 및 검증 변경으로 매니페스트, 클라이언트, 클러스터 설정을 조정해야 할 수 있으므로 업그레이드를 신중히 계획해야 합니다.

## 조치 필요
- **[security]** 잘못된 객체 삭제의 어드미션 우회 경로 제거
  - 잘못된 객체 삭제가 어드미션을 우회하고, 정상 객체의 유예 삭제에 영향을 줄 수 있던 예외 처리를 제거했습니다.
- **[breaking]** `WatchListCompression` 기본 활성화
  - `WatchListCompression` 관련 동작이 기본으로 활성화됐습니다. `WatchListCompression` 기능 게이트로 비활성화할 수 있습니다.
- **[breaking]** `EtcdRangeStream` 베타 승격 및 기본 활성화
  - `EtcdRangeStream` 기능 게이트가 베타로 승격됐으며 기본으로 활성화됩니다.
- **[breaking]** `AllowUnsafeMalformedObjectDeletion` 기본 활성화
  - `AllowUnsafeMalformedObjectDeletion` 기능 게이트가 베타로 승격돼 기본 활성화됩니다. 스토리지에서 읽을 수 없는 객체의 목록 오류에는 최초 원인도 포함됩니다.
- **[breaking]** `PodLevelResourceManagers` 기본 비활성화
  - 릴리스 전 발견된 문제로 `PodLevelResourceManagers` 기능 게이트를 기본 비활성화했습니다.
- **[breaking]** `kube-scheduler`의 목록형 특성 평가 유지
  - `ListTypeAttributes` 기능 게이트가 비활성화돼도 `kube-scheduler`가 목록형 특성, `.includes` 함수, CEL 매크로를 평가합니다. 롤링 업그레이드 중이거나 기능 게이트를 전환할 때 발생하던 오류를 막습니다.

## 영향 확인
- **[security]** `kubeconfig` 이전 시 파일 권한 유지
  - 이전을 위해 `kubeconfig` 파일을 설정한 경우에 해당합니다.
  - `client-go`가 `kubeconfig` 파일을 이전할 때 원본 파일의 권한을 유지합니다. 이전에는 대상 파일이 더 넓은 권한으로 만들어져 같은 시스템의 다른 사용자에게 자격 증명이 노출될 수 있었습니다.
- **[breaking]** `SELinuxMount` 기본 활성화
  - 클러스터에서 SELinux를 활성화한 경우에 해당합니다.
  - `SELinuxMount` 기능이 `v1.37`부터 기본 활성화됩니다. SELinux가 활성화된 클러스터에서는 기존 워크로드가 중단될 수 있습니다.
- **[breaking]** Workload-Aware Scheduling API의 `v1beta1` 승격
  - `scheduling.k8s.io/v1alpha2` 또는 `scheduling.k8s.io/v1beta1`을 사용하는 경우에 해당합니다.
  - 핵심 Workload-Aware Scheduling API 타입인 `Workload`와 `PodGroup`이 `scheduling.k8s.io/v1beta1`로 승격됐습니다.
- **[breaking]** `DisruptionMode` 필드 형식 변경
  - `DisruptionMode`를 사용하는 경우에 해당합니다.
  - 향후 확장을 지원하도록 `DisruptionMode` 열거형 필드가 구조체로 바뀌었습니다.
- **[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`이 시작하지 못합니다.
- **[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` 기능 게이트가 활성화 상태로 고정됐습니다.
- **[breaking]** `DRAPlugin.WatchHealthStatus` 필수화
  - `DRAPlugin.WatchHealthStatus`를 사용하는 경우에 해당합니다.
  - `DRAPlugin.WatchHealthStatus`가 필수 메서드가 됐습니다.
- **[breaking]** `GangScheduling` 및 `WorkloadAwarePreemption` 제거
  - `GangScheduling` 또는 `WorkloadAwarePreemption`을 설정한 경우에 해당합니다.
  - `GangScheduling` 및 `WorkloadAwarePreemption` 기능 게이트가 제거됐습니다. 대신 `GenericWorkload` 기능 게이트를 사용합니다.
- **[breaking]** `AnyVolumeDataSource` 기능 게이트 제거
  - `AnyVolumeDataSource`를 설정한 경우에 해당합니다.
  - 정식 출시 상태였던 `AnyVolumeDataSource` 기능 게이트가 제거됐습니다.
- **[breaking]** 어드미션 웹훅 요청의 균등 분산
  - `--enable-aggregator-routing=true`를 설정한 경우에 해당합니다.
  - `--enable-aggregator-routing=true`인 `kube-apiserver`가 어드미션 웹훅 엔드포인트에 요청을 고르게 분산합니다. `WebhookRoundTripLoadBalancing`은 베타 기능이며 기본 활성화 상태이고, 일시적으로 이전 동작을 선택할 수 있습니다.
- **[breaking]** HPA의 0까지 축소 및 0에서 확장 기본 활성화
  - `HorizontalPodAutoscaler`(HPA)를 사용하는 경우에 해당합니다.
  - `HorizontalPodAutoscaler`(HPA)의 0까지 축소와 0에서 확장이 기본으로 활성화됐습니다.
- **[breaking]** `MaxUnavailableStatefulSet` 기본 활성화
  - `MaxUnavailableStatefulSet`을 사용하는 경우에 해당합니다.
  - `MaxUnavailableStatefulSet` 기능이 기본으로 활성화됐습니다.
- **[breaking]** 어드미션 웹훅의 가상 리소스 제외
  - 어드미션 웹훅을 사용하는 경우에 해당합니다.
  - 어드미션 웹훅이 `tokenreviews`, `subjectaccessreviews` 같은 인증 및 권한 확인 가상 리소스를 건너뜁니다. `ExcludeAdmissionWebhookVirtualResources`는 기본 활성화된 베타 기능 게이트이며, 이전 동작으로 되돌릴 수 있습니다.
- **[breaking]** `NodeLocalCRISocket` 기능 게이트 제거
  - `kubeadm`을 실행하는 경우에 해당합니다.
  - `kubeadm`에서 `NodeLocalCRISocket` 기능 게이트가 제거됐습니다. 이 기능은 이전 릴리스에서 정식 출시되고 기본 활성화 상태로 고정됐습니다.
- **[breaking]** `HPAOptimizedSelectorStore` 기본 활성화
  - HorizontalPodAutoscaler 컨트롤러를 실행하는 경우에 해당합니다.
  - HPA 컨트롤러의 선택기 중복 감지에서 잠금 경합을 줄이기 위한 `HPAOptimizedSelectorStore` 기능 게이트가 추가됐습니다. 이 베타 기능은 기본으로 활성화되며, HPA 수와 동시 실행 수가 많은 상황의 조정 처리량을 높입니다.
- **[breaking]** 사용자 지정 열 출력의 `--label-columns` 오류 처리
  - `--label-columns`를 설정한 경우에 해당합니다.
  - 사용자 지정 열 출력에서 `--label-columns`를 함께 사용하면 `kubectl get`이 오류를 반환합니다.
- **[breaking]** 빈 `image.reference` 필드 거부
  - `image.reference`를 설정한 경우에 해당합니다.
  - Deployment, StatefulSet, DaemonSet, Job 등의 Pod 템플릿에서 비어 있는 `image.reference` 필드를 거부합니다.
- **[breaking]** `kubelet` 로그 엔드포인트의 HTTP 메서드 제한
  - `kubelet`을 실행하는 경우에 해당합니다.
  - `kubelet`의 로그 관련 엔드포인트가 HTTP 메서드를 명시적으로 제한합니다. 읽기 전용 `kubelet` 서버 엔드포인트는 GET 이외의 메서드에 405를 반환하고, `NodeLogQuery`는 GET과 POST만 허용합니다.
- **[breaking]** nftables 모드의 netlink 기본 활성화
  - `kube-proxy` nftables 모드를 실행하는 경우에 해당합니다.
  - `kube-proxy` nftables 모드에서 netlink 지원이 기본으로 활성화됐습니다.
- **[breaking]** PodGroup 검증 알파 어드미션 플러그인 제거
  - 알파 어드미션 플러그인을 사용하는 경우에 해당합니다.
  - PodGroup이 기존 Workload를 참조하고 선언된 PodGroupTemplate 사양과 일치하는지 검증하던 알파 어드미션 플러그인이 제거됐습니다.
- **[breaking]** Node 네트워크 변경 시 `kube-proxy` 종료
  - `kube-proxy`를 실행하는 경우에 해당합니다.
  - 감시 중인 Node의 IP가 바뀌거나 Node 객체가 삭제되면 `kube-proxy`가 종료됩니다. 재시작 시 변경된 노드 네트워크 상태를 반영합니다.
- **[breaking]** hugepage 노드의 `memory.available` 계산 변경
  - 노드에서 hugepages를 사용하는 경우에 해당합니다.
  - hugepages를 사용하는 노드에서 `kubelet` 축출 관리자가 `memory.available` 계산의 `AvailableBytes`에서 hugepage 예약 RAM을 제외합니다. 기본 활성화된 `HugepageAwareEviction` 기능 게이트를 비활성화하면 이전 동작으로 되돌아갑니다.
- **[breaking]** `DRAPrioritizedList` 활성화 고정
  - DRA를 사용하는 경우에 해당합니다.
  - DRA의 Prioritized List 기능이 `v1.36`에서 정식 출시됨에 따라 `DRAPrioritizedList` 기능 게이트가 기본 활성화 상태로 고정됐습니다. 더 이상 비활성화할 수 없습니다.
- **[breaking]** `RelaxedDNSSearchValidation` 기능 게이트 제거
  - `RelaxedDNSSearchValidation`을 설정한 경우에 해당합니다.
  - `RelaxedDNSSearchValidation` 기능 게이트가 제거됐습니다.
- **[breaking]** 고정된 정식 출시 기능 게이트 제거
  - `RetryGenerateName`, `BtreeWatchCache`, `OrderedNamespaceDeletion`, `StreamingCollectionEncodingToJSON`, `StreamingCollectionEncodingToProtobuf`, `APIServerTracing`, `ResilientWatchCacheInitialization`, `ConsistentListFromCache` 중 하나를 설정한 경우에 해당합니다.
  - 정식 출시 상태로 고정돼 있던 `RetryGenerateName`, `BtreeWatchCache`, `OrderedNamespaceDeletion`, `StreamingCollectionEncodingToJSON`, `StreamingCollectionEncodingToProtobuf`, `APIServerTracing`, `ResilientWatchCacheInitialization`, `ConsistentListFromCache` 기능 게이트가 제거됐습니다.
- **[breaking]** `--concurrent-service-syncs` 플래그 제거
  - `--concurrent-service-syncs`를 설정한 경우에 해당합니다.
  - `kube-controller-manager`의 `--concurrent-service-syncs` 플래그가 제거됐습니다. 이 플래그는 `v1.31`부터 동작하지 않았습니다.
- **[breaking]** `PreventStaticPodAPIReferences` 기능 게이트 제거
  - `PreventStaticPodAPIReferences`를 설정한 경우에 해당합니다.
  - `PreventStaticPodAPIReferences` 기능 게이트가 제거됐습니다. 정적 Pod는 더 이상 API 리소스를 참조할 수 없으며, 이 동작을 비활성화할 수도 없습니다.
- **[breaking]** `SidecarContainers` 기능 게이트 제거
  - `SidecarContainers`를 설정한 경우에 해당합니다.
  - `v1.33`부터 무조건 활성화돼 있던 `SidecarContainers` 기능 게이트가 제거됐습니다.
- **[breaking]** 기존 API 서버 캐시 목록 메트릭 기본 비노출
  - `apiserver_cache_list_total`, `apiserver_cache_list_fetched_objects_total` 또는 `apiserver_cache_list_returned_objects_total`을 사용하는 경우에 해당합니다.
  - 사용 중단 예정이었던 알파 메트릭 `apiserver_cache_list_total`, `apiserver_cache_list_fetched_objects_total`, `apiserver_cache_list_returned_objects_total`이 더 이상 기본으로 노출되지 않습니다. 통합 메트릭 `apiserver_storage_list_*`에서 `storage="watchcache"` 레이블을 사용합니다.
- **[breaking]** `DefaultWatchCacheSize` 필드 제거
  - `DefaultWatchCacheSize`를 설정한 경우에 해당합니다.
  - `k8s.io/apiserver/pkg/server/options.EtcdOptions`의 동작하지 않던 `DefaultWatchCacheSize` 필드가 제거됐습니다.
- **[breaking]** `kubeadm v1beta3` API 및 `PublicKeysECDSA` 제거
  - `v1beta3` API를 사용하거나 `PublicKeysECDSA`를 설정한 경우에 해당합니다.
  - `kubeadm`의 `v1beta3` API와 하위 호환용 `PublicKeysECDSA` 기능 게이트가 제거됐습니다. ECDSA 키 지원은 `v1beta4`의 `ClusterConfiguration.EncryptionAlgorithm` 필드에서 설정하며, `v1beta4`를 복제한 실험용 `v1` API는 아직 사용할 수 없습니다.

## 미리 준비
- **[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 사용 중단 예정
  - 적용 대상이 릴리스 노트에 명시되지 않았습니다.
  - `client-go`의 기존 API가 사용 중단 예정으로 표시됐습니다. 제거할 계획은 없습니다.
- **[deprecated]** 리더 선출 `resourcelock` API 사용 중단 예정
  - `MultiLock`, `UnknownLeader` 또는 `ConcatRawRecord`를 사용하는 경우에 해당합니다.
  - `client-go` 리더 선출 `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/ko/releases/kubernetes/v1.37.0)

[원본 릴리스 노트](https://github.com/kubernetes/kubernetes/releases/tag/v1.37.0)
