[CloudNeta] EKS 워크샵 스터디 (2) - EKS Networking - maxPods 결정 방법
EKS 노드에 적용되는 최종 maxPods 값은 여러 구성 요소에 따라 달라지며, 특정 우선순위로 결정됩니다.
우선순위 (높은 순서 → 낮은 순서)
1. 관리형 노드 그룹 적용
사용자 지정 AMI 없이 관리형 노드 그룹을 사용하는 경우, Amazon EKS가 노드 사용자 데이터에 maxPods 최대 한도를 주입합니다.
| 조건 | maxPods 상한 |
|---|---|
| vCPU 30개 미만 | 110 (k8s 확장 권고값 기준) |
| vCPU 30개 이상 | 250 (AWS 내부 테스트 권고값 기준) |
이 값은 maxPodsExpression을 포함한 다른 모든 maxPods 구성보다 우선합니다.
2. kubelet maxPods 구성
kubelet 구성에서 직접 maxPods를 설정하는 경우(예: 사용자 지정 AMI를 사용하는 시작 템플릿), 이 값이 maxPodsExpression보다 우선합니다.
3. nodeadm maxPodsExpression
NodeConfig에서 maxPodsExpression을 사용하면 nodeadm이 표현식을 평가하여 maxPods를 계산합니다. 우선순위가 더 높은 소스에 의해 값이 아직 설정되지 않은 경우에만 유효합니다.
4. 기본 ENI 기반 계산
다른 값이 설정되지 않은 경우, AMI가 인스턴스 타입의 ENI/IP 수를 기반으로 maxPods를 계산합니다:
+2는 파드 IP를 소비하지 않는 aws-node와 kube-proxy를 고려한 것입니다.
관리형 노드 그룹 vs 자체 관리형 노드
관리형 노드 그룹
사용자 지정 AMI 없이 관리형 노드 그룹을 사용하면, Amazon EKS가 부트스트랩 사용자 데이터에 maxPods 값을 주입합니다.
maxPods는 항상 인스턴스 크기에 따라110또는250으로 제한됩니다maxPodsExpression을 설정해도 이 주입된 값으로 재정의됩니다- 다른
maxPods값을 사용하려면:- 시작 템플릿에서 사용자 지정 AMI를 지정
bootstrap.sh스크립트에-use-max-pods false와--kubelet-extra-args '--max-pods=<원하는 값>'을 전달
자체 관리형 노드
부트스트랩 프로세스를 완전히 제어할 수 있습니다.
NodeConfig에서maxPodsExpression사용 가능bootstrap.sh에--max-pods를 직접 전달 가능