표준 지원 Kubernetes 버전의 릴리스 노트 검토
표준 지원 Kubernetes 버전의 릴리스 노트 검토
팁
예정된 Amazon EKS 워크숍에 등록하세요.
이 주제는 표준 지원에 있는 각 Kubernetes 버전에 대해 알아야 할 중요한 변경 사항을 제공합니다. 업그레이드할 때 클러스터의 이전 버전과 새 버전 사이에서 발생한 변경 사항을 주의 깊게 검토하세요.
Kubernetes 1.36
Kubernetes 1.36이 Amazon EKS에서 사용 가능해졌습니다. Kubernetes 1.36에 대한 자세한 내용은 공식 릴리스 공지를 참고하세요.
중요
- gitRepo 볼륨 제거:
gitRepo볼륨 유형은 Kubernetes 1.36에서 영구적으로 비활성화되었으며 다시 활성화할 수 없습니다. Kubernetes API는 여전히gitRepo볼륨이 있는 Pod를 받아들이지만, kubelet은 이를 실행하기를 거부하고 오류를 반환합니다.
- 필요한 조치: 1.36으로 업그레이드하기 전에 init 컨테이너나 git-sync sidecar 컨테이너로 마이그레이션하세요. 자세한 내용은 KEP-5040을 참고하세요.
- SELinux 볼륨 라벨링 변경 (GA): Kubernetes 1.36에서 더 빠른 SELinux 볼륨 라벨링이 재귀적 파일 재라벨링 대신
mount -o context를 사용해서 모든 볼륨에 기본으로 적용됩니다. 같은 노드에서 권한 있는 Pod와 권한 없는 Pod가 볼륨을 공유하면 문제가 발생할 수 있어요. 향후 Kubernetes 릴리스는 이 기능과 관련된 추가 호환성 변경을 도입할 수 있습니다.
- 필요한 조치: SELinux 시행 시스템을 실행하는 고객은 클러스터를 감사하고 업그레이드 전에
seLinuxChangePolicy필드와 SELinux 볼륨 라벨이 Pod에 올바르게 설정되었는지 확인하세요. 자세한 내용은 SELinux Volume Label Changes goes GA (and likely implications in v1.37)를 참고하세요.- 엄격한 IP/CIDR 검증 기본 활성화:
StrictIPCIDRValidation기능 게이트가 이제 내장 API 종류에 대해 기본으로 활성화됩니다. API 필드는 불필요한 선행 0이 있는 IP 또는 CIDR 값(예:10.0.0.5대신010.000.000.005)이나 모호한 의미를 가진 CIDR 값(예:192.168.0.0/24대신192.168.0.5/24)을 더 이상 받아들이지 않습니다. 기존 저장 객체는 검증 래칭(validation ratcheting)을 통해 보존되지만 새 생성과 업데이트는 거부됩니다. 이는 사용자 정의 리소스 종류에는 적용되지 않습니다.
- 필요한 조치: 선행 0이 있는 IP 주소나 비정규 CIDR 표기법을 포함한 매니페스트, Helm 차트, 자동화를 검토하세요. 업그레이드 전에 정규 형식을 사용하도록 업데이트하세요. 자세한 내용은 KEP-4858을 참고하세요.
- 사용자 네임스페이스 (Stable): User Namespaces는 컨테이너의 루트 사용자를 호스트의 비권한 사용자에 매핑해서 심층 방어를 제공하며, 컨테이너 탈출이 노드에 대한 관리 권한을 부여하지 않도록 보장합니다. 자세한 내용은 Kubernetes 블로그의 User Namespaces in Kubernetes are finally GA를 참고하세요.
- 리소스 상태 (Beta): Pod 상태에서 장치별 상태를 보고해서 운영자가 크래시 루프가 애플리케이션 문제가 아니라 Unhealthy 또는 Unknown 장치 상태 때문인지 판단할 수 있게 해 줍니다. Device Plugins와 Dynamic Resource Allocation 모두에서 작동합니다. 자세한 내용은 KEP-4680을 참고하세요.
- Dynamic Resource Allocation 기능 (Beta): 여러 DRA 기능이 이제 기본으로 활성화됩니다. GPU 같은 하드웨어의 더 세부적인 공유를 위한 Partitionable Devices와 Consumable Capacity, 스케줄링 전 철저한 장치 준비 상태 확인을 위한 Device Binding Conditions입니다. 자세한 내용은 Kubernetes 블로그의 Kubernetes v1.36: More Drivers, New Features, and the Next Era of DRA를 참고하세요.
- 폐기 공지 — Service externalIPs: Service
.spec의externalIPs필드는 Kubernetes 1.36에서 폐기됩니다. 이 필드를 사용하는 Service를 만들거나 업데이트할 때 폐기 경고가 보일 거예요. 전체 제거는 Kubernetes 1.43으로 계획되어 있습니다.externalIPs를 사용하는 고객은 LoadBalancer Services, NodePort, 또는 Gateway API로 마이그레이션해야 합니다. 자세한 내용은 KEP-5707을 참고하세요.
전체 Kubernetes 1.36 변경 로그는 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.36.md를 참고하세요.
Kubernetes 1.35
Kubernetes 1.35가 Amazon EKS에서 사용 가능해졌습니다. Kubernetes 1.35에 대한 자세한 내용은 공식 릴리스 공지를 참고하세요.
중요
- Cgroup v1 지원 제거: Kubernetes 1.35는 cgroup v1 지원을 폐기하여, kubelet이 기본적으로 cgroup v1을 사용하는 노드에서 시작되기를 거부합니다.
- AL2023: AL2023은 기본적으로 cgroup v2를 사용하며 Kubernetes 업스트림 동작과 정렬됩니다.
- 필요한 조치: AL2023을 cgroup v1을 사용하도록 수동으로 구성한 고객은 cgroups v2로 마이그레이션하거나 kubelet 구성에서
failCgroupV1: false를 수동으로 설정해야 합니다.- Bottlerocket: Bottlerocket 1.35는 기본적으로 cgroup v2를 사용하지만 kubelet 구성에서
failCgroupV1: false를 설정해서 이전 호환성을 유지합니다.- Fargate: Fargate는 계속 cgroup v1을 사용합니다.
- Containerd 1.x 지원 종료: Kubernetes 1.35는 containerd 1.x를 지원하는 마지막 릴리스입니다. 다음 Kubernetes 버전으로 업그레이드하기 전에 containerd 2.0 이상으로 전환해야 해요.
- 2026년 3월, 업스트림 Kubernetes 프로젝트는 많은 Kubernetes 환경의 중요한 인프라 구성 요소인 Ingress NGINX를 퇴역시킵니다.
- 필요한 조치: EKS 고객은 Ingress NGINX에 의존하는지 평가하고, 퇴역 후 버그 수정·보안 패치·업데이트 릴리스가 없으므로 Gateway API나 타사 Ingress 컨트롤러 같은 대안으로의 마이그레이션을 계획해야 합니다. 기존 배포는 계속 작동하지만, 퇴역 후 Ingress NGINX를 유지하면 사용 가능한 대안 중 직접적인 대체품이 없고 계획과 엔지니어링 시간이 필요하므로 환경이 보안 위험에 노출됩니다. 이 Kubernetes 공지에 대한 자세한 내용은 Kubernetes Steering and Security Response Committees의 공식 성명 Ingress NGINX retirement를 참고하세요.
- In-Place Pod Resource Updates (Stable): In-Place Pod Resource Updates는 Pod나 컨테이너를 재시작하지 않고 CPU·메모리 리소스를 조정할 수 있게 해 줍니다. 이전에는 그러한 수정에 Pod 재생성이 필요했으며, 특히 상태 유지 또는 배치 애플리케이션에서 워크로드를 방해할 수 있었어요. 새 제자리 기능은 더 부드럽고 중단 없는 수직 확장을 가능하게 하고 효율을 개선하며 개발을 단순화할 수 있습니다. 자세한 내용은 Kubernetes 블로그의 Kubernetes 1.35: In-Place Pod Resize Graduates to Stable을 참고하세요.
- PreferSameNode 트래픽 분산 (Stable): Services의
trafficDistribution필드가 트래픽 라우팅에 대한 더 명시적인 제어를 제공하도록 업데이트되었습니다. 새 옵션PreferSameNode가 도입되어 서비스가 가능할 때 로컬 노드의 엔드포인트를 엄격히 우선하고 그 외에는 원격 엔드포인트로 폴백하도록 할 수 있어요. 이 변경은 현재 노드 내 트래픽 선호에 대해 API를 더 명시적으로 만듭니다. - StatefulSet MaxUnavailable (Beta): 이 기능은
maxUnavailable(예: 3 또는 10%)을 설정해서 병렬 Pod 업데이트를 가능하게 하고, 데이터베이스 클러스터 같은 상태 유지 애플리케이션이 순차적 일대일 업데이트보다 최대 60% 더 빠르게 업데이트되도록 해서 유지 관리 창을 크게 줄입니다. - Windows Server 2025 지원: EKS 1.35는 Windows Server 2025 지원을 추가합니다.
- Kubelet 플래그 제거:
--pod-infra-container-image플래그가 kubelet에서 제거되었습니다. 사용자 정의 AMI 사용자는 1.35로 업그레이드하기 전에 kubelet 구성에서 이 플래그를 제거해야 합니다. - 폐기 공지 - IPVS 모드: kube-proxy의 IPVS 모드가 폐기되며 Kubernetes 1.36에서 제거됩니다.
전체 Kubernetes 1.35 변경 로그는 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.35.md를 참고하세요.
Kubernetes 1.34
Kubernetes 1.34가 Amazon EKS에서 사용 가능해졌습니다. Kubernetes 1.34에 대한 자세한 내용은 공식 릴리스 공지를 참고하세요.
중요
- Version 1.34에서 containerd가 2.1로 업데이트되었습니다.
- 업그레이드 후 문제가 발생하면 containerd 2.1 릴리스 노트를 확인하세요.
- AWS는 Kubernetes 1.34용 EKS 최적화 Amazon Linux 2 AMI를 릴리스하지 않습니다.
- AWS는 Amazon Linux 2023으로 마이그레이션할 것을 권장합니다. Upgrade from Amazon Linux 2 to Amazon Linux 2023 방법을 알아보세요.
- 자세한 내용은 Amazon Linux 2 AMI deprecation을 참고하세요.
- AppArmor는 Kubernetes 1.34에서 폐기됩니다.
- seccomp나 Pod Security Standards 같은 대안적인 컨테이너 보안 솔루션으로 마이그레이션할 것을 권장합니다.
- VolumeAttributesClass (VAC)가 Kubernetes 1.34에서 GA로 승격되어, beta API (
storage.k8s.io/v1beta1)에서 안정 API (storage.k8s.io/v1)로 이동합니다.
- ECR Gallery의 CSI Components에서 AWS 관리 sidecar 컨테이너로 EBS CSI 드라이버를 사용한다면 EKS 1.31-1.33 클러스터에서 볼륨 수정이 계속 원활하게 작동합니다. AWS는 EKS 1.33 표준 지원 종료(2026년 7월 29일)까지 beta VAC API를 지원하도록 sidecar를 패치할 것입니다.
- CSI sidecar 컨테이너를 자체 관리한다면 1.34 이전 클러스터에서 VAC 기능을 유지하기 위해 더 오래된 sidecar 버전에 고정해야 할 수 있습니다.
- GA VolumeAttributesClass 기능(수정 롤백 같은)을 사용하려면 EKS 1.34 이상으로 업그레이드하세요.
- Service Account Tokens용 External JWT Signer가 Beta로 승격되었습니다. 외부 서명자를 사용할 때
--service-account-extend-token-expiration플래그는 더 이상 완전히 존중되지 않습니다. API 서버는 원하는 연장(1년)과 외부 서명자의 한도(24시간) 사이의 최소 만료를 강제합니다.
- Kubernetes가 자동으로 마운트·교체하는 바운드 서비스 계정 토큰을 사용할 것을 권장합니다.
- Dynamic Resource Allocation (DRA) Core APIs (GA): Dynamic Resource Allocation이 안정으로 승격되어 표준화된 할당 인터페이스를 통해 GPU 같은 특수 하드웨어의 효율적인 관리를 가능하게 합니다. 하드웨어 가속기 리소스 관리를 단순화하고 특수 리소스의 사용률을 개선합니다.
- Kubelet용 Projected ServiceAccount Tokens (Beta): 이 향상은 장기 비밀 대신 수명이 짧은 자격 증명을 컨테이너 이미지 풀에 사용해서 자격 증명 노출 위험을 줄이고 클러스터의 전반적인 보안 태세를 강화합니다.
- Pod 수준 리소스 요청·한도 (Beta): 이 기능은 다중 컨테이너 Pod를 위한 공유 리소스 풀을 허용해서 리소스 관리를 단순화하고, 여러 컨테이너가 있는 복잡한 애플리케이션에 더 효율적인 리소스 할당과 사용을 가능하게 합니다.
- Mutable CSI Node Allocatable Count (Beta):
MutableCSINodeAllocatableCount기능 게이트가 EKS 1.34에서 기본으로 활성화되어 CSINode 최대 연결 볼륨 수 속성을 변경 가능하게 만들고 CSI 드라이버 수준에서 사용자 구성에 따라 동적으로 업데이트하는 메커니즘을 도입합니다. 이러한 업데이트는 주기적 간격이나 장애 감지에 의해 트리거될 수 있어, 노드의 보고된 연결 용량과 실제 연결 용량 사이의 불일치를 해결해서 상태 유지 Pod 스케줄링의 신뢰성을 높입니다. 자세한 내용은 Kubernetes 블로그의 Kubernetes v1.34: Mutable CSI Node Allocatable Count를 참고하세요. - 폐기 공지 - cgroup 드라이버 구성: 수동 cgroup 드라이버 구성이 자동 감지를 위해 폐기되고 있습니다.
- 고객 영향: kubelet 구성에서
--cgroup-driver플래그를 수동으로 설정하고 있다면 이 구성을 제거할 준비를 하세요. - 필요한 조치: 기능이 향후 Kubernetes 릴리스에서 제거되기 전에 노드 부트스트랩 스크립트와 사용자 정의 AMI 구성을 업데이트해서 수동 cgroup 드라이버 설정을 제거할 계획을 세우세요.
- 자세한 내용은 cgroup driver 문서를 참고하세요.
- 고객 영향: kubelet 구성에서
전체 Kubernetes 1.34 변경 로그는 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.34.md를 참고하세요.
더 알아보기 (Learn more)
출처: 문서