릴리즈 정보
•
릴리즈 버전: v1.34.0
•
릴리즈 일자: 2025년 8월 27일
•
지원 기간: 2025년 8월 ~ 2026년 10월 (14개월)
•
다음 릴리즈: v1.35 (2025년 12월)
한눈에 보기
핵심 메시지: 이번 Kubernetes v1.34 릴리즈는 외부 환경의 변화와 내부의 도전 속에서도, 커뮤니티의 강력한 의지와 협력을 통해 쿠버네티스를 꾸준히 발전시켜 나가는 모습을 상징합니다.
이번 릴리즈의 주요 변화 중 Dynamic Resource Allocation(DRA)의 핵심 기능이 Stable로 전환되었으며, kubelet 이미지 자격증명 공급자를 위한 ServiceAccount 토큰 프로젝션이 도입되어 보안이 강화되었습니다.
총 58개의 개선사항 중 23개가 안정화(Stable) 단계에 진입하여 클러스터의 신뢰성과 운영 효율성을 한층 더 높였습니다.
•
Dynamic Resource Allocation (DRA) 코어 안정화 (Stable): GPU, TPU 등 특수 하드웨어를 동적으로 프로비저닝하고 관리하는 표준 방법이 공식 기능으로 자리 잡았습니다.
•
단기(short-lived) SA 토큰 기반의 이미지 풀링 (Beta): 노드 레벨의 장기(long-lived) 시크릿 대신 Pod의 ID를 기반으로 하는 단기 토큰을 사용해 컨테이너 레지스트리에서 이미지를 안전하게 가져올 수 있습니다.
•
KYAML 지원 (Alpha): Kubernetes에 최적화된 새로운 YAML 표현법인 KYAML을 kubectl의 출력 형식으로 사용하여 YAML의 모호성을 줄이고 가독성을 높입니다.
•
새로운 기능 및 개선사항: 58개 (Alpha: 13개, Beta: 22개, Stable: 23개)
•
주요 제거 및 변경사항: 3개
즉시 확인 필요사항
Breaking Changes & API 변경
업그레이드 전 필수 확인사항:
변경사항 | 영향 범위 | 대응 방법 | 긴급도 |
cgroupDriver 수동 설정 Deprecated | 노드 (kubelet) | kubelet 설정에서 cgroupDriver를 제거하고 CRI 런타임이 자동으로 드라이버를 감지하도록 전환해야 합니다. | |
PreferClose 트래픽 분배 정책 Deprecated | 서비스 (Service) | spec.trafficDistribution 필드의 PreferClose 값을 의미가 더 명확한 PreferSameZone으로 변경합니다. | |
containerd 1.x 지원 중단 예정 | 노드 (컨테이너 런타임) | v1.36부터 containerd 1.x 버전 지원이 중단될 예정이므로, containerd 2.0+로 업그레이드를 계획해야 합니다. |
주요 일정
•
containerd 1.x 지원 종료: v1.36 (2026년 상반기 예상)
•
cgroupDriver 설정 제거 예정: v1.36 이후 릴리즈
주요 추가 기능 & 개선사항
플랫폼 & 인프라
Dynamic Resource Allocation (DRA) (Stable) KEP-4381
•
유연한 리소스 관리: 스토리지의 동적 프로비저닝과 유사하게, 복잡한 하드웨어 리소스를 온디맨드로 요청하고 사용할 수 있습니다.
•
표준화된 접근: 각기 다른 벤더의 장치 드라이버들이 일관된 방식으로 Kubernetes와 통합될 수 있는 표준 API를 제공합니다.
•
효율성 증대: 필요한 만큼만 리소스를 할당하여 하드웨어 자원의 낭비를 줄입니다.
# Pod에서 특정 GPU 장치를 요청하는 예제
apiVersion: v1
kind: Pod
metadata:
name: dra-pod-example
spec:
resourceClaims:
- name: gpu-claim
source:
resourceClaimTemplateName: gpu-claim-template
containers:
- name: my-container
image: my-gpu-app
resources:
requests:
# 이 컨테이너가 사용하는 리소스 클레임을 명시
resource.k8s.io/gpu: "1"
YAML
복사
노드 스왑(Swap) 메모리 지원 (Stable) KEP-2400
•
워크로드 안정성 향상: 메모리 사용량이 많은 워크로드가 OOM(Out of Memory)으로 종료되는 대신 스왑 공간을 활용하여 더 안정적으로 실행될 수 있습니다.
•
리소스 효율성 증대: 자주 사용하지 않는 메모리 페이지를 디스크로 이동시켜 물리 메모리를 더 효율적으로 사용할 수 있습니다.
•
다양한 애플리케이션 지원: 메모리 사용 패턴이 불규칙적인 애플리케이션(예: 대규모 Java 애플리케이션)의 실행 환경을 개선합니다.
보안 & 거버넌스
kubelet 이미지 풀링을 위한 단기 ServiceAccount 토큰 (Beta) KEP-4412
•
보안 강화: 노드에 저장되던 장기 자격증명(secret)을 제거하여 자격증명 유출 위험을 크게 줄입니다.
•
관리 오버헤드 감소: 워크로드별로 자격증명을 관리할 필요 없이 Pod의 ID를 기반으로 인증하므로 관리가 단순해집니다.
•
최소 권한 원칙: 이미지 풀링 권한이 노드가 아닌 특정 Pod에만 부여되어 최소 권한 원칙을 실현합니다.
뮤테이팅 어드미션 정책 (MutatingAdmissionPolicies) (Beta) KEP-3962
•
운영 간소화: 별도의 뮤테이팅 웹훅(Webhook) 서버를 운영할 필요 없이 API 서버 내에서 직접 객체 변형 로직을 처리할 수 있습니다.
•
성능 및 안정성: 인프로세스(in-process) 방식으로 동작하여 외부 웹훅 호출로 인한 네트워크 지연이나 장애 발생 가능성이 없습니다.
•
유지보수 용이성: YAML로 정책을 직접 정의하므로 코드를 작성하고 배포하는 것보다 관리가 훨씬 쉽습니다.
성능 & 확장성
스트리밍 list 응답 (Stable) KEP-5116
•
메모리 사용량 최적화: API 서버가 대규모 응답을 처리할 때 발생하는 메모리 급증을 방지하여 컨트롤 플레인의 안정성을 크게 향상시킵니다.
•
대규모 클러스터 확장성 개선: 수천 개의 Pod나 CRD를 조회하는 시나리오에서도 API 서버의 성능 저하 없이 안정적인 서비스가 가능합니다.
개발자 경험
KYAML 지원 (Alpha) KEP-5295
•
모호성 제거: "노르웨이 버그"와 같이 따옴표 없는 문자열이 의도치 않게 boolean이나 숫자로 해석되는 문제를 방지합니다.
•
가독성 및 편의성 개선: JSON과 달리 주석을 지원하고, YAML보다 들여쓰기 규칙이 덜 민감하여 사용자가 더 쉽게 작성하고 읽을 수 있습니다.
# KYAML 지원 활성화 (환경 변수 설정)
export KUBECTL_KYAML=true
# kubectl get 명령어에 -o kyaml 옵션 사용
kubectl get pods -o kyaml
Bash
복사
운영 관점에서의 변화
모니터링 & 관찰가능성
•
DRA 리소스 상태 보고: kubelet이 DRA를 통해 할당된 리소스 정보를 보고하여 노드 모니터링 에이전트가 이를 수집할 수 있습니다. (Beta, KEP-3695)
•
DRA 리소스 상태 확인: Pod의 status 필드를 통해 할당된 장치의 상태(health)를 노출하여 문제 해결을 용이하게 합니다. (Alpha, KEP-4680)
리소스 관리
•
Pod 레벨 리소스 요청/제한: 컨테이너별이 아닌 Pod 전체에 대한 리소스 요청 및 제한을 설정할 수 있어 멀티 컨테이너 Pod 관리가 단순해집니다. (Beta, KEP-2837)
•
Job Pod 교체 정책: Job의 Pod가 완전히 종료된 후에만 교체 Pod를 생성하는 Failed 정책을 지원하여 리소스 경합을 줄입니다. (Stable, KEP-3939)
고가용성 & 재해복구
•
Windows 노드 정상 종료 처리: Windows 노드에서도 시스템 종료 이벤트를 감지하여 Pod를 정상적으로 종료시킴으로써 데이터 유실을 방지하고 워크로드 안정성을 높입니다. (Beta, KEP-4802)
•
복원력 있는 Watch Cache 초기화: kube-apiserver 시작 시 Watch Cache 초기화 과정의 안정성을 높여 컨트롤 플레인의 견고성을 강화합니다. (Stable, KEP-4568)
추가 학습 자료
공식 문서
•
•
이번 릴리즈 주요 KEP 문서
Stable로 승격된 기능들:
•
KEP-4381: DRA: Structured Parameters - 동적 리소스 할당의 핵심 API 안정화
•
KEP-3939: Job Pod Replacement Policy - Job의 Pod가 완전히 종료된 후 교체 Pod 생성 지원
•
KEP-2400: Node Swap Support - 노드 레벨 스왑 메모리 지원
•
Beta로 승격된 기능들:
•
KEP-4412: Kubelet Image Credential Provider for projected ServiceAccount tokens - 단기 토큰 기반 이미지 풀링
•
KEP-2837: Pod-level Resource Requests and Limits - Pod 단위 리소스 요청 및 제한 설정
•
KEP-3962: Mutating Admission Policies - CEL 기반의 선언적 뮤테이팅 어드미션 정책
•
새롭게 도입된 Alpha 기능들:
•
KEP-4317: Pod certificates for mTLS authentication - Pod의 mTLS 인증을 위한 내장 인증서 발급 메커니즘
•
KEP-5295: Support for KYAML - Kubernetes에 최적화된 YAML 방언, KYAML 지원
•
KEP-5307: Container Restart Rules - 컨테이너별 재시작 정책 및 종료 코드 기반 규칙 정의
맺음말
Kubernetes v1.34 릴리즈는 클러스터의 안정성과 보안, 효율성을 한 단계 끌어올리는 중요한 업데이트입니다. 이번 릴리즈를 통해 기대할 수 있는 핵심적인 효과는 다음과 같습니다.
•
안정성과 리소스 관리의 고도화: Dynamic Resource Allocation(DRA)과 노드 스왑(Swap) 지원이 안정화되면서, GPU와 같은 특수 하드웨어의 관리 유연성이 극대화되고 메모리 집약적인 워크로드의 안정성이 크게 향상될 것입니다.
•
강력한 보안과 간소화된 운영: 단기 SA 토큰 기반의 이미지 풀링과 내장 뮤테이팅 정책은 자격증명 유출 위험을 줄이고, 외부 웹훅 없이도 클러스터 정책을 효율적으로 관리할 수 있는 길을 열어줍니다.
•
개발 경험과 성능 향상: 새롭게 도입된 KYAML 지원과 스트리밍 API 응답은 개발자가 YAML 설정의 모호함에서 벗어나 대규모 클러스터에서도 더 빠르고 안정적으로 리소스를 다룰 수 있도록 돕는 실질적인 개선입니다.
이번 릴리즈가 제공하는 다양한 개선 사항들이 여러분의 인프라를 더욱 자동화되고 안정적으로 만드는 데 기여할 수 있기를 바랍니다.
이현승 프로
클라우드와 오픈소스 SW 관련 연구 개발 프로젝트들을 진행해왔고, 지금은 OSS 기술서비스와 아키텍처를 담당하고 있어요 


