오픈소스 인사이트
home
오픈소스 기술 동향
home
🚀

Kubernetes v1.34: Of Wind & Will (O' WaW) 릴리즈 소식

7 more properties

📊 릴리즈 정보

•
릴리즈 버전: 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 런타임이 자동으로 드라이버를 감지하도록 전환해야 합니다.
🔴 High
PreferClose 트래픽 분배 정책 Deprecated
서비스 (Service)
spec.trafficDistribution 필드의 PreferClose 값을 의미가 더 명확한 PreferSameZone으로 변경합니다.
🟡 Medium
containerd 1.x 지원 중단 예정
노드 (컨테이너 런타임)
v1.36부터 containerd 1.x 버전 지원이 중단될 예정이므로, containerd 2.0+로 업그레이드를 계획해야 합니다.
🔴 High

📅 주요 일정

•
containerd 1.x 지원 종료: v1.36 (2026년 상반기 예상)
•
cgroupDriver 설정 제거 예정: v1.36 이후 릴리즈

🚀 주요 추가 기능 & 개선사항

🏗️ 플랫폼 & 인프라

Dynamic Resource Allocation (DRA) (Stable) KEP-4381

📝 요약: GPU, FPGA 등과 같은 특수 장치 리소스를 동적으로 할당하고 관리하기 위한 프레임워크가 안정화되었습니다.
💡 왜 중요한가요?
•
유연한 리소스 관리: 스토리지의 동적 프로비저닝과 유사하게, 복잡한 하드웨어 리소스를 온디맨드로 요청하고 사용할 수 있습니다.
•
표준화된 접근: 각기 다른 벤더의 장치 드라이버들이 일관된 방식으로 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
복사
🎯 타겟 유저: 플랫폼 엔지니어, ML/AI 엔지니어

노드 스왑(Swap) 메모리 지원 (Stable) KEP-2400

📝 요약: 노드에서 스왑 메모리 사용을 공식적으로 지원하여 메모리 압박 상황에서의 안정성을 높입니다.
💡 왜 중요한가요?
•
워크로드 안정성 향상: 메모리 사용량이 많은 워크로드가 OOM(Out of Memory)으로 종료되는 대신 스왑 공간을 활용하여 더 안정적으로 실행될 수 있습니다.
•
리소스 효율성 증대: 자주 사용하지 않는 메모리 페이지를 디스크로 이동시켜 물리 메모리를 더 효율적으로 사용할 수 있습니다.
•
다양한 애플리케이션 지원: 메모리 사용 패턴이 불규칙적인 애플리케이션(예: 대규모 Java 애플리케이션)의 실행 환경을 개선합니다.
🎯 타겟 유저: 클러스터 관리자, 플랫폼 엔지니어

🔐 보안 & 거버넌스

kubelet 이미지 풀링을 위한 단기 ServiceAccount 토큰 (Beta) KEP-4412

📝 요약: kubelet이 프라이빗 레지스트리에서 이미지를 가져올 때, Pod의 ServiceAccount를 기반으로 한 단기 토큰을 동적으로 요청하여 사용합니다.
💡 왜 중요한가요?
•
보안 강화: 노드에 저장되던 장기 자격증명(secret)을 제거하여 자격증명 유출 위험을 크게 줄입니다.
•
관리 오버헤드 감소: 워크로드별로 자격증명을 관리할 필요 없이 Pod의 ID를 기반으로 인증하므로 관리가 단순해집니다.
•
최소 권한 원칙: 이미지 풀링 권한이 노드가 아닌 특정 Pod에만 부여되어 최소 권한 원칙을 실현합니다.
🎯 타겟 유저: 보안 엔지니어, 클러스터 관리자

뮤테이팅 어드미션 정책 (MutatingAdmissionPolicies) (Beta) KEP-3962

📝 요약: CEL(Common Expression Language)을 사용하여 들어오는 API 객체를 변경하는 규칙을 선언적으로 정의할 수 있습니다.
💡 왜 중요한가요?
•
운영 간소화: 별도의 뮤테이팅 웹훅(Webhook) 서버를 운영할 필요 없이 API 서버 내에서 직접 객체 변형 로직을 처리할 수 있습니다.
•
성능 및 안정성: 인프로세스(in-process) 방식으로 동작하여 외부 웹훅 호출로 인한 네트워크 지연이나 장애 발생 가능성이 없습니다.
•
유지보수 용이성: YAML로 정책을 직접 정의하므로 코드를 작성하고 배포하는 것보다 관리가 훨씬 쉽습니다.
🎯 타겟 유저: 클러스터 관리자, 정책 관리자

⚡ 성능 & 확장성

스트리밍 list 응답 (Stable) KEP-5116

📝 요약: 대규모 리소스 목록(list) 요청 시, 전체 결과를 메모리에 버퍼링하지 않고 스트리밍 방식으로 클라이언트에 전송합니다.
💡 왜 중요한가요?
•
메모리 사용량 최적화: API 서버가 대규모 응답을 처리할 때 발생하는 메모리 급증을 방지하여 컨트롤 플레인의 안정성을 크게 향상시킵니다.
•
대규모 클러스터 확장성 개선: 수천 개의 Pod나 CRD를 조회하는 시나리오에서도 API 서버의 성능 저하 없이 안정적인 서비스가 가능합니다.

🛠️ 개발자 경험

KYAML 지원 (Alpha) KEP-5295

📝 요약: kubectl의 출력 옵션으로 Kubernetes에 최적화된 YAML 형식인 KYAML을 지원합니다.
💡 왜 중요한가요?
•
모호성 제거: "노르웨이 버그"와 같이 따옴표 없는 문자열이 의도치 않게 boolean이나 숫자로 해석되는 문제를 방지합니다.
•
가독성 및 편의성 개선: JSON과 달리 주석을 지원하고, YAML보다 들여쓰기 규칙이 덜 민감하여 사용자가 더 쉽게 작성하고 읽을 수 있습니다.
🔧 어떻게 사용하나요?
# KYAML 지원 활성화 (환경 변수 설정) export KUBECTL_KYAML=true # kubectl get 명령어에 -o kyaml 옵션 사용 kubectl get pods -o kyaml
Bash
복사
🎯 타겟 유저: 개발자, DevOps 엔지니어 등

📈 운영 관점에서의 변화

모니터링 & 관찰가능성

•
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 - 노드 레벨 스왑 메모리 지원
•
KEP-5116: Streaming LIST responses - API 서버의 list 요청에 대한 스트리밍 응답
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 기반의 선언적 뮤테이팅 어드미션 정책
•
KEP-3104: kuberc file for kubectl user preferences - kubectl 사용자 설정을 위한 .kuberc 파일 지원
새롭게 도입된 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 기술서비스와 아키텍처를 담당하고 있어요 😀