[EKS] 클러스터 버전 업그레이드 표준 프로세스
1단계: 사전 준비 및 API 호환성 검토 (Planning)
가장 중요한 단계입니다. 새로운 Kubernetes 버전에서 삭제(Deprecated)되는 API가 있는지 반드시 확인해야 합니다.
API 체크:
pluto나kubent(Kube No Service)같은 오픈소스 도구를 사용하여 현재 클러스터에서 사용 중인 Manifest 파일이 차기 버전과 호환되는지 점검하세요.순차 업그레이드: EKS는 한 번에 한 버전씩만 올릴 수 있습니다. (예: 1.29 → 1.31 직행 불가, 반드시 1.29 → 1.30 → 1.31 순서로 진행)
백업:
AWS Backup for Amazon EKS등을 사용하여 클러스터 리소스를 백업해 두는 것을 강력히 권장합니다.
2단계: 컨트롤 플레인 업그레이드 (Control Plane)
AWS 콘솔이나 CLI를 통해 업그레이드를 시작합니다.
동작 원리: AWS가 가용 영역별로 컨트롤 플레인 인스턴스를 순차적으로 교체합니다.
주의: 업그레이드 중에도 서비스(Pod)는 계속 실행되지만,
kubectl명령어나 API 서버 호출이 일시적으로 지연될 수 있습니다.
3단계: 필수 애드온 업데이트 (Add-ons)
컨트롤 플레인이 성공적으로 업그레이드되었다면, 이에 맞는 통신 모듈들을 업데이트해야 합니다.
대상:
vpc-cni,kube-proxy,coredns.방법: EKS 관리형 애드온(Managed Add-ons)을 사용 중이라면 콘솔에서 클릭 한 번으로 버전을 맞출 수 있습니다. 자체 관리형이라면 각 이미지 태그를 K8s 버전에 맞게 수정해야 합니다.
4단계: 워커 노드 업그레이드 (Data Plane)
노드 그룹을 최신 AMI 버전으로 교체하는 과정입니다.
Managed Node Groups: '인스턴스 새로 고침(Update Config)' 기능을 사용하면 Rolling Update 방식으로 기존 노드의 Pod를 안전하게 축출(Evict)하고 새 노드로 옮겨줍니다.
Self-Managed Nodes: 새 버전의 AMI로 노드 그룹을 새로 생성한 뒤, 기존 노드를
Cordon및Drain처리하여 마이그레이션해야 합니다.Karpenter: Karpenter를 사용 중이라면
disruption설정을 통해 아주 간단하게 최신 AMI로 노드를 교체할 수 있습니다.
5단계: 사후 검증 (Verification)
kubectl get nodes를 통해 모든 노드가 새로운 버전으로Ready상태인지 확인합니다.핵심 비즈니스 Pod들이 정상적으로
Running상태이며 트래픽을 처리하고 있는지 모니터링합니다.
업그레이드 시 주의사항
항목 | 주의사항 |
PDB (Pod Disruption Budgets) | PDB 설정이 너무 엄격하면(예: |
서브넷 가용 IP | Rolling Update 시 임시로 노드가 늘어나므로, 해당 서브넷에 여유 IP 주소가 충분한지 확인하세요. |
드라이버 호환성 | EBS CSI Driver나 로드밸런서 컨트롤러(LBC)가 최신 K8s 버전을 지원하는 버전인지 미리 확인하고 필요 시 먼저 업데이트하세요. |
무중단 여부 | 컨트롤 플레인 업그레이드는 무중단이지만, 노드 교체 시 Pod 재시작이 발생하므로 Graceful Shutdown 설정이 필수입니다. |
댓글
댓글 0개
이 문서에는 댓글을 달 수 없습니다.