Kubernetes

EKS Node의 최대 Pod 수

백곰곰 2022. 8. 1. 20:29
728x90
반응형

개요

EKS Node에 배포 가능한 최대 pod 수는 ENI에 할당 가능한 IP 수와 EC2에 부착 가능한 최대 ENI 수에 따라 결정됩니다. 따라서 Node의 인스턴스 타입 별로 다른 최대 pod 수를 갖게 됩니다.

참고로 pod 수 계산식의 +2 는 hostNetwork 모드로 실행되는 pod(VPC CNI, kube-proxy)가 반영된 부분입니다.

Node에 배치된 pod 수에 모든 pod가 포함되므로, 추가적으로 hostNetwork를 사용하는 pod가 있다면, 조정하여 더 많은 pod를 배치할 수 있습니다. 

참조. 인스턴스 타입 별 Max Pod 수

하지만 VPC CNI add-on의 prefix 할당 모드를 사용하면서 더 많은 수의 pod를 Node에 배포할 수 있게 되었습니다.

 

VPC CNI Prefix Delegation 옵션

해당 옵션을 통해 /28 사이즈의 IP CIDR을 ENI에 할당할 수 있습니다. (VPC CNI add-on 1.9.0 이상)

[설정 방법]

kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true

[확인 방법]

kubectl describe des aws-node -n kube-system | grep -i delegation
	ENABLE_PREFIX_DELEGATION:          true

AWS 콘솔에서 Node ENI에 아래와 같이 /28 IP CIDR이 할당된 것을 볼 수 있습니다.

기존 ENI에 여러 개의 단일 IP를 부착하는 방식보다 많은 수의 pod를 Node에 배포할 수 있습니다.

AWS에서는 VPC CNI prefix delegation 옵션 사용 시 최대 pod 수를 30 vCPU 미만의 EC2에 대해 110개, 그 이상은 250개로 권고합니다. (실제 가용 IP가 110개 보다 많더라도 Kubernetes 공식 문서에서 Node 당 pod 수를 110개 이하로 권고하고 있기 때문으로 추정)

 

기타 관련 옵션

Pod 생성 시 ENI/IP가 부족할 때 빠르게 할당할 수 있도록 미리 warm pool(여유분)을 마련할 수 있습니다.

  • WARM_PREFIX_TARGET : 특정 수 만큼의 사용하지 않은 /28 CIDR을 할당함 (Ex. 기존 prefix에서 1개의 IP를 pod에서 사용할 시 새 /28 CIDR 할당)
  • WARM_IP_TARGET : 특정 IP 개수만큼 사용하지 않은 secondary IP를 할당함
  • MINIMUM_IP_TARGET : Node 별 유지해야 할 IP 수 (+ secondary IP 동적 할당 임계값, WARM_IP_TARGET 설정 시 반드시 설정 권고)
  • WARM_ENI_TARGET : 특정 ENI 수 만큼 사용하지 않은 ENI(여유분)를 할당함

출처

Choosing an Amazon EC2 instance type

https://github.com/aws/amazon-vpc-cni-k8s

AWS EKS - VPC CNI 1편 - POD 통신

대형 클러스터에 대한 고려 사항

728x90