- Today
- Total
코기판
AWS EKS 배포 가능한 최대 pods 갯수 본문
백엔드 마이크로 서비스에 대한 로드 밸런싱을 테스트해보려고 하다가,
worker node의 capability가 모두 차서, 더 이상 pod을 가진 service가 배포되지 않는 상황이 발생하였다.
pod 갯수가 worker node instance에서 허용 가능한 갯수를 초과한 것이다.
따라서, worker node가 가득 찬 상태에서는
개발자들이 서비스를 배포하면, 배포 대상인 pod들이 pending 상태가 되며 새로운 서비스를 deploy할 수 없는 상황이 발생했다.
instance당 수용 가능한 pod 갯수는 아래 링크에서 확인할 수 있다.
https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt
# Mapping is calculated from AWS ENI documentation, with the following modifications: # * First IP on each ENI is not used for pods # * 2 additional host-networking pods (AWS ENI and kube-proxy) are accounted for # # # of ENI * (# of IPv4 per ENI - 1) + 2
ENI의 문서에서 링크와 같은 rule을 매핑한 모양인데, ENI가 뭔지에 대한 감이 없어서 좀 조사해보았다.
ENI (Elastic Network Interface)
VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소입니다.
(출처 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-eni.html)
아무래도 새로운 서비스를 배포하게 되면, 내부적으로 ip가 할당되는데, instance종류에 따라 ip주소 할당의 갯수가 달라지는 것 같다.
위 링크에서 인스턴스 유형 별로 사용 가능한 ENI의 갯수를 정리가 되어있다.
ENI의 숫자 * ( ENI 당 ipv4의 숫자 - 1 ) + 2 가 되므로
m1.medium의 경우를 계산해보면,
2 * ( 6 - 1 ) + 2 = 12
즉, 12개의 max pod을 띄울 수 있는 것이다.
만약의 최대 pod 갯수를 초과하면, worker node를 오토 스케일링 하는 방법을 강구해야 한다.
참조 :
https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/files/eni-max-pods.txt
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-eni.html
* 제 개인적인 생각이므로, 틀린 부분이 있을 수 있습니다. 기술토론 환영합니다 !
'Infra' 카테고리의 다른 글
grpc client load balancing 구현하기 (grpc 번외편) (0) | 2019.05.28 |
---|---|
protobuf란 무엇인가? (gRPC 시리즈 #2) (1) | 2019.05.12 |
gRPC란 무엇인가? (gRPC 시리즈 #1) (5) | 2019.04.21 |
k8s pod autoscaler 개념 (HPA, VPA) (0) | 2019.04.02 |
EKS에 클러스터 오토스케일링(cluster autoscaling) 하기 (4) | 2019.03.29 |