Deep Dive Architecture
Junseok Oh
Sr. Solutions Architect
Amazon Web Services
Block 1: 내부 아키텍처 이해 (35분)
Karpenter의 역할과 Auto Mode의 관리 범위
배치되지 못한 Pod에 맞는
노드를 골라 추가합니다.
조건이 맞으면 노드를 정리해
불필요한 비용을 줄입니다.
Karpenter 기반 노드 관리와
OS·주요 인프라 구성 요소를 관리합니다.
Controller 설치·패치 부담을 줄입니다.
앱에 필요한 CPU·메모리,
배치 조건과 중단 허용 범위를 정합니다.
앱의 가용성은 함께 설계해야 합니다.
EKS: 1.37 · 직접 설치한 Karpenter: v1.15.0 (2026-10-15 확인).
Auto Mode에 별도 Helm 버전을 지정하지 않습니다. 직접 설치한 Karpenter는 공식 호환성 표 기준 Kubernetes 1.37에 1.15.x가 필요합니다. 공식 출처·변경 사항
Auto Mode와 직접 설치한 Karpenter부터 비교
| 특징 | Karpenter 기반, AWS 관리형, 인스턴스 다양화 |
|---|---|
| 스케일링 | Balanced 기본 정책 (EKS 1.37 신규 풀), 수요 기반 프로비저닝 |
| 비용 | EC2 + Auto Mode 관리 비용 (2026-07부터 GPU 계열 인하), 커스텀 풀에서 Spot 활용 |
| 2026 추가 기능 | NodeClass advancedCompute, EFA 인터페이스, ARC zonal shift 대응, EC2 상태 검사 실패 노드 자동 교체 |
| 적합 워크로드 | 가변적 워크로드, 다양한 인스턴스 요구사항 |
| 팀이 관리 | Controller · CRD · IAM · AMI 선택/업데이트 |
|---|---|
| 노드 설정 | NodePool + EC2NodeClass |
| 잘 맞는 경우 | AMI와 노드 구성을 직접 제어해야 할 때 |
| 업그레이드 | v1.15.0 · Controller와 CRD를 함께 확인 (1.37은 1.15.x 필요) |
| 특징 | ASG 기반, Launch Template, 수동 설정 |
|---|---|
| 스케일링 | Cluster Autoscaler 등으로 노드 그룹 용량 조절 |
| 비용 | 노드 그룹 단위로 인스턴스 타입·Spot 구성 |
| 적합 워크로드 | 예측 가능한 워크로드, 특정 인스턴스 요구 |
| 특징 | 서버리스, Pod 단위 격리, 노드 관리 없음 |
|---|---|
| 스케일링 | Pod 단위 용량 제공 · 실제 시작 시간은 환경에 따라 다름 |
| 비용 | vCPU/메모리 기반 과금, 유휴 비용 없음 |
| 적합 워크로드 | 배치 작업, 간헐적 워크로드, 보안 격리 |
배치 불가(FailedScheduling) 예시 → 용량 계획 → 노드 준비 → Pod 배치
먼저 기본 풀의 역할을 구분하고, 필요한 경우 설정을 펼쳐 보세요
Spot을 쓰려면 별도 커스텀 풀을 만듭니다.
읽기용 발췌입니다. AWS가 관리하는 기본 풀은 직접 수정하지 않습니다.
taint를 허용하는 toleration이 있어야 배치 후보가 됩니다.
기본 풀은 직접 수정하지 않습니다. 두 기본 풀 모두 EKS 1.37에서는 Balanced를 사용합니다.
노드를 만들 때 필요한 AWS 설정 세 가지
Subnet · Security Group
네트워크 위치와 허용할 통신을 정합니다.
노드 IAM 역할
노드가 AWS API와 클러스터에 접근할 권한을 준비합니다.
로컬 스토리지
컨테이너 이미지와 로그 등에 쓸 디스크 크기를 정합니다.
AMI·IMDS 보안은 AWS 관리.
노드 역할: EC2 Access Entry + AmazonEKSAutoNodePolicy
예제의 network-type은 직접 붙인 subnet 태그입니다. Private subnet에는 필요한 NAT 또는 VPC endpoint 연결도 준비해야 합니다.
| kubelet | maxPods, podPidsLimit, eviction, 컨테이너 로그 회전, allowedUnsafeSysctls |
|---|---|
| kernel.sysctl | 지원 목록의 항목만 허용 (예: net.core.somaxconn, vm.max_map_count, ARP cache) |
| hugepages | 2Mi/1Gi 고정 예약 또는 THP 정책. Pod는 hugepages-2Mi 등을 요청 |
변경하면 기존 노드는 Drift로 교체되고 새 노드부터 반영됩니다. static hugepages와 EFA는 같은 NodeClass에 함께 쓸 수 없습니다.
먼저 워크로드 목적을 고르고, requirements에서 바뀐 조건을 확인
앞에서 만든 workload NodeClass를 사용합니다. 네트워크·IAM 준비 후 적용하는 예제입니다.
docker buildx build --platform linux/amd64,linux/arm64 으로 멀티 아키텍처 이미지 빌드
프로비저닝 타임라인 시뮬레이션 · 시간은 설명용 예시, SLA 아님
12개 이름으로 보는 필터 연습 · 실제 가격·용량 계산은 생략
Consolidation = Pod를 재배치하고 불필요한 노드 정리 · 모두 한 노드에 들어가는 예시
상황을 고르면 세 가지 Consolidation 정책을 비교할 수 있습니다
실행 중인 일반 워크로드가 없는 노드를 정리합니다.
Pod를 옮길 수 있고 더 저렴하게 운영할 수 있으면 통합을 검토합니다.
비용 절감과 Pod 중단 비용을 함께 평가합니다.
교육용 정성 비교입니다. 실제 결정은 배치 가능성, PDB, 교체 예산 등에도 영향을 받습니다.
기존 노드가 원하는 설정과 맞지 않으면 교체를 검토합니다
모든 변경이 Drift는 아닙니다. limits·weight·disruption 변경은 Drift를 유발하지 않으며, 허용 범위를 넓혀도 기존 노드가 계속 맞을 수 있습니다.
NodePool 예산은 노드 수 · PDB는 앱의 Pod 중단 제어
Drift 교체 예시: 10대 × 10% = 한 번에 최대 1대. 비율은 올림, 여러 예산은 최솟값을 적용합니다. 삭제 중·NotReady 노드는 0개로 가정합니다.
프로비저닝 시간 단축을 위한 Best Practices
하나씩 답을 고르고, 해설에서 이유를 확인하세요