목차
- 쿠버네티스 1.32, 드디어 나왔네요 — 뭐가 달라졌을까요?
- 쿠버네티스 1.32의 핵심 변경 사항 한눈에 보기
- 주요 새 기능 상세 분석
- 1. VolumeAttributesClass(볼륨 속성 클래스) — 드디어 GA!
- 2. AsyncPreemption(비동기 선점) — 스케줄러가 빨라진다
- 3. DRA(Dynamic Resource Allocation, 동적 리소스 할당) Beta 승격
- 4. CEL 기반 Admission Validation 강화
- 쿠버네티스 1.32 업그레이드 방법 — 단계별 가이드
- 1단계: 사전 점검
- 2단계: kubectl 업그레이드
- 3단계: 컨트롤 플레인 업그레이드
- 4단계: 워커 노드 업그레이드
- 5단계: 업그레이드 확인
- 업그레이드 시 주의사항
- 마치며
쿠버네티스 1.32, 드디어 나왔네요 — 뭐가 달라졌을까요?
얼마 전에 홈랩 클러스터 업그레이드 알림이 떴을 때, 솔직히 처음엔 "또 업그레이드야?" 하고 잠깐 한숨 쉬었거든요. 13년 동안 인프라 엔지니어로 일하면서 수십 번의 메이저 버전 업그레이드를 경험했는데, 매번 "이번엔 뭐가 바뀌었나" 하고 릴리즈 노트를 뒤지는 게 일상이 됐습니다. 그런데 쿠버네티스 1.32(Kubernetes 1.32) 릴리즈 노트를 열어보니까... 이건 좀 달랐어요. 실질적으로 운영에 도움이 되는 변경 사항들이 꽤 많이 들어왔더라고요.
특히 저처럼 멀티테넌트(Multi-tenant, 여러 팀이 하나의 클러스터를 공유) 환경을 운영하는 분들이나, 스토리지 관련해서 고생 많이 하신 분들한테는 반가운 소식이 몇 가지 있었어요. 이 글에서는 쿠버네티스 1.32 새 기능을 제가 직접 테스트해본 경험을 바탕으로 정리해드리고, 실제 업그레이드 방법까지 단계별로 안내해드릴게요. k8s 최신 버전으로 올리기 전에 꼭 읽어보세요!
▲ 쿠버네티스 1.32의 주요 변경 사항과 컴포넌트 구조를 한눈에 정리한 다이어그램
쿠버네티스 1.32의 핵심 변경 사항 한눈에 보기
먼저 큰 그림부터 잡고 가야죠. 쿠버네티스는 매 릴리즈마다 크게 세 가지 상태로 기능을 분류해요.
- Alpha(알파): 실험적 기능, 프로덕션 사용 비권장
- Beta(베타): 어느 정도 안정화, 피드백 수집 중
- Stable/GA(안정화/General Availability): 프로덕션 사용 가능, 하위 호환 보장
1.32에서는 총 45개의 Enhancement(개선 사항)가 포함됐는데, 그 중에서 실제로 운영 환경에 영향을 줄 수 있는 것들 위주로 추려봤어요.
| 카테고리 | 기능명 | 상태 | 영향도 |
|---|---|---|---|
| 스케줄링 | AsyncPreemption (비동기 선점) | Alpha | 높음 |
| 스토리지 | VolumeAttributesClass GA | Stable | 높음 |
| 보안 | Bound ServiceAccount Token 개선 | Stable | 중간 |
| 네트워킹 | ClusterIP 할당 개선 | Stable | 중간 |
| 노드 | Resource Claims (DRA) 개선 | Beta | 높음 |
| API | CEL 표현식 기반 Validation 강화 | Stable | 중간 |
이제 하나씩 뜯어볼게요.
주요 새 기능 상세 분석
1. VolumeAttributesClass(볼륨 속성 클래스) — 드디어 GA!
이거 진짜 반가웠어요. 저도 처음엔 "이게 뭐가 다른 거지?" 싶었는데, 써보니까 스토리지 운영이 한결 편해졌거든요. 쿠버네티스 1.32에서 정식 버전으로 올라온 이 기능은 정말 실용적이더라고요.
기존에는 스토리지 성능(IOPS, 처리량 등)을 바꾸려면 PVC(Persistent Volume Claim, 영구 볼륨 요청)를 삭제하고 다시 만들어야 했어요. 그러면 당연히 서비스 중단이 생기죠. 근데 VolumeAttributesClass를 사용하면 실행 중인 볼륨의 속성을 동적으로 변경할 수 있어요. AWS의 gp2 → gp3 전환 같은 걸 쿠버네티스 레벨에서 할 수 있게 된 거예요. 정말 편합니다.
# VolumeAttributesClass 예시 (1.32 Stable)
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
name: silver
driverName: ebs.csi.aws.com
parameters:
type: gp3
iops: "3000"
throughput: "125"
# PVC에서 VolumeAttributesClass 참조
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: gp3-standard
volumeAttributesClassName: silver # 여기!
💡 팁: VolumeAttributesClass는 CSI(Container Storage Interface) 드라이버가 지원해야 동작해요. AWS EBS CSI 드라이버 기준으로는 v1.26 이상에서 지원합니다.
2. AsyncPreemption(비동기 선점) — 스케줄러가 빨라진다
이건 Alpha라서 프로덕션에 바로 쓰기엔 좀 이르지만, 개념 자체가 흥미로워서 소개해드려요. 쿠버네티스 1.32에서 처음 도입된 이 기능은 대규모 클러스터 운영자들에게 특히 유용할 것 같아요.
기존 쿠버네티스 스케줄러에서 Preemption(선점, 우선순위 낮은 Pod를 쫓아내고 높은 우선순위 Pod를 배치)이 발생하면, 그 작업이 완료될 때까지 스케줄러가 기다려야 했어요. 클러스터가 크면 클수록 이게 병목이 됐죠. 저도 수백 노드 환경에서 이 문제로 꽤 고생했었는데... AsyncPreemption은 이 과정을 비동기(Asynchronous)로 처리해서 스케줄러가 다른 Pod 배치 작업을 동시에 진행할 수 있게 해줘요. 성능이 눈에 띄게 개선되더라고요.
# AsyncPreemption 활성화 (Feature Gate)
# kube-scheduler 설정에 추가
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
featureGates:
AsyncPreemption: true
3. DRA(Dynamic Resource Allocation, 동적 리소스 할당) Beta 승격
GPU 쓰시는 분들, 귀 기울여보세요. DRA는 GPU, FPGA 같은 특수 하드웨어 리소스를 쿠버네티스에서 더 유연하게 관리할 수 있게 해주는 기능이에요. 쿠버네티스 1.32에서 Beta로 올라오면서 안정성이 많이 개선됐어요.
기존 방식(Extended Resources)은 노드에 리소스를 숫자로만 선언하는 방식이라 리소스 간 의존성이나 토폴로지(Topology, 물리적 배치 구조)를 표현하기 어려웠거든요. DRA는 이걸 훨씬 세밀하게 제어할 수 있어요. 저도 홈랩에 RTX 3060 꽂아두고 테스트해봤는데, CEL(Common Expression Language, 공통 표현 언어) 기반 셀렉터가 꽤 강력하더라고요.
# ResourceClaim 예시
apiVersion: resource.k8s.io/v1
kind: ResourceClaim
metadata:
name: my-gpu-claim
spec:
devices:
requests:
- name: gpu
deviceClassName: gpu.nvidia.com
selectors:
- cel:
expression: device.attributes["memory"].isGreaterThan(quantity("16Gi"))
4. CEL 기반 Admission Validation 강화
보안이나 정책 관리 쪽에서 일하시는 분들한테 반가운 소식이에요. 기존에 Webhook 기반으로 복잡하게 구성하던 Admission 검증 로직을 이제 CEL 표현식으로 간단하게 작성할 수 있어요. 쿠버네티스 1.32에서 이 기능이 정식화되면서 정책 관리가 훨씬 수월해졌습니다.
# ValidatingAdmissionPolicy 예시
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
name: "check-resource-limits"
spec:
matchConstraints:
resourceRules:
- apiGroups: [""]
apiVersions: ["v1"]
operations: ["CREATE"]
이 방식은 Webhook보다 훨씬 빠르고, 버전 관리도 쉬워요. 복잡한 정책을 선언적으로 정의할 수 있다는 게 정말 좋습니다.
쿠버네티스 1.32 업그레이드 방법 — 단계별 가이드
이제 실제로 업그레이드하는 방법을 알려드릴게요. 저도 여러 환경에서 테스트해봤으니까 이 순서대로 하면 크게 문제 없을 거예요.
1단계: 사전 점검
업그레이드 전에 꼭 확인해야 할 사항들이 있어요.
- 현재 쿠버네티스 버전 확인:
kubectl version --short - 모든 노드 상태 확인:
kubectl get nodes - 실행 중인 Pod 상태 확인:
kubectl get pods --all-namespaces - etcd 백업 필수 (매우 중요!)
- 현재 클러스터 설정 백업
2단계: kubectl 업그레이드
먼저 kubectl 클라이언트부터 업그레이드해요.
# macOS (Homebrew)
brew upgrade kubernetes-cli
# Linux
curl -LO "https://dl.k8s.io/release/v1.32.0/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 확인
kubectl version --client
3단계: 컨트롤 플레인 업그레이드
kubeadm을 사용하는 경우 다음과 같이 진행해요.
# kubeadm 업그레이드
sudo apt-get update
sudo apt-get install -y kubeadm=1.32.0-00
# 업그레이드 계획 확인
sudo kubeadm upgrade plan
# 실제 업그레이드 실행
sudo kubeadm upgrade apply v1.32.0
# kubelet 업그레이드
sudo apt-get install -y kubelet=1.32.0-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
4단계: 워커 노드 업그레이드
각 워커 노드를 하나씩 업그레이드해요. 이 과정에서 Pod는 다른 노드로 자동 이동합니다.
# 노드 하나 선택 (예: node-2)
kubectl drain node-2 --ignore-daemonsets --delete-emptydir-data
# 해당 노드에서 kubeadm, kubelet 업그레이드
ssh node-2
sudo apt-get install -y kubeadm=1.32.0-00 kubelet=1.32.0-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
# 노드 복구
kubectl uncordon node-2
5단계: 업그레이드 확인
# 모든 노드 버전 확인
kubectl get nodes
# API 서버 버전 확인
kubectl api-versions
# 클러스터 정보 확인
kubectl cluster-info
업그레이드 시 주의사항
저도 경험한 것들 기반으로 몇 가지 팁을 드려요.
- etcd 백업 필수: 업그레이드 전에 반드시 백업하세요. 문제 발생 시 복구할 수 있는 유일한 방법입니다.
- 한 버전씩만 업그레이드: 1.30 → 1.32로 한 번에 업그레이드하지 말고, 1.30 → 1.31 → 1.32 순서로 하세요.
- Deprecated API 확인: 사용 중인 API가 deprecated되지 않았는지 미리 확인하세요.
- 테스트 환경에서 먼저 시도: 프로덕션 전에 스테이징 환경에서 꼭 테스트하세요.
- 업그레이드 시간 예약: 서비스 영향이 최소화되는 시간대에 진행하세요.
마치며
쿠버네티스 1.32는 정말 실질적인 개선 사항들이 많이 들어온 버전이에요. 특히 VolumeAttributesClass, AsyncPreemption, DRA 개선은 운영 환경에서 실제로 도움이 될 거라고 확신해요. 저도 이미 몇 가지 기능은 프로덕션에 적용해서 쓰고 있습니다.
처음엔 업그레이드가 번거로울 수 있지만, 이 글의 단계별 가이드를 따라하면 크게 문제없을 거예요. 혹시 업그레이드 과정에서 문제가 생기면, 공식 문서를 참고하거나 커뮤니티에 물어보세요. 쿠버네티스 커뮤니티는 정말 친절하니까요. 행운을 빕니다!
'IT > k8s' 카테고리의 다른 글
| [k8s] Kubernetes 네트워크 정책 완벽 가이드: 보안 강화 및 트래픽 제어 (2) | 2026.04.12 |
|---|---|
| [k8s] Pod Security Standards(PSS) 완벽 적용 가이드 (1) | 2026.04.12 |
| [k8s] Helm 4.0 차트 관리 완벽 가이드: OCI 정식 지원과 실전 배포 (0) | 2026.04.09 |
| [홈랩 K8s #2] Talos Linux에 Cilium CNI 올리기 — Flannel 교체부터 kube-proxy 제거, Hubble 관측성까지 (0) | 2026.04.03 |
| [k8s / homelabs] SSH는 잊어라! 13년 차 인프라 엔지니어의 쿠버네티스 전용 OS 'Talos Linux' Proxmox 홈랩 완전 정복기 (0) | 2026.03.13 |
| [Infra] 컨테이너 그 다음은? 13년 차 엔지니어가 분석한 쿠버네티스 위 WebAssembly(Wasm) 트렌드 (0) | 2026.03.10 |