EKS 클러스터를 콘솔에서 Auto Mode(자율 모드 컴퓨팅) 로 만들 때 내장 NodePool general-purpose 와 system 이 기본 선택돼 있다. 이를 해제했을 때의 동작과, 메모리 부족을 이유로 t3.medium → t3.large 처럼 인스턴스 타입을 직접 올리려 할 때 Auto Mode 에서 왜 그 발상이 통하지 않는지를 정리한다.
내장 NodePool 중 최소 하나는 켜야 default NodeClass 가 자동 생성된다. 둘 다 끄면 다음 상태가 된다.
Pending 이다.NodeClass 와 NodePool YAML 을 직접 작성해 kubectl apply 해야 노드가 프로비저닝된다.system 풀을 끄면 CriticalAddonsOnly taint 가 걸린 전용 노드가 없어 CoreDNS 같은 시스템 애드온이 일반 워크로드 노드에 섞여 스케줄링된다.Auto Mode 는 Karpenter 기반이라 파드의 CPU/메모리 요구를 보고 AWS 가 인스턴스를 동적으로 고른다. 기본 general-purpose NodePool 의 요구 조건은 다음과 같다.
requirements:
- key: eks.amazonaws.com/instance-category
values: [c, m, r] # t 계열 없음
- key: eks.amazonaws.com/instance-generation
operator: Gt
values: ["4"] # 5세대 이상만
t 계열은 카테고리 자체가 제외돼 있어 내장 풀로는 t3.large 가 뜨지 않는다. 내장 NodePool 은 수정도 되지 않고(패치해도 EKS 가 원복) 활성/비활성만 토글할 수 있다.
| 목적 | 방법 |
|---|---|
| t3.large 를 꼭 써야 한다(비용 절감 등) | Auto Mode 를 끄고 EKS Managed Node Group 을 쓴다. 노드 그룹 생성 시 인스턴스 타입을 직접 지정할 수 있다 |
| Auto Mode 를 유지한다 | 내장 풀을 끄지 말고 general-purpose 에 맡긴다. 메모리 부족은 m5.large 급 이상이 자동으로 뜨면서 해소된다(시간당 단가와 Auto Mode 관리 수수료는 더 든다) |
| Auto Mode 에서 t 계열을 쓴다 | 내장 풀을 끄고 커스텀 NodePool 에 instance-category: [t], instance-family: [t3, t3a] 를 넣어 직접 만든다 |
학습 · 사이드 프로젝트면 Managed Node Group 이, 운영 자동화가 목적이면 Auto Mode 기본값이 단순하다.