AWS EKS는 Kubernetes 클러스터를 쉽게 배포하고 관리할 수 있도록 지원하는 완전 관리형 서비스이다. EKS를 구성할 때 가장 중요한 요소 중 하나는 VPC(Virtual Private Cloud) 아키텍처겠지요.
EKS 클러스터는 VPC 내부에 구축되며, VPC 설계 시 고려해야 할 사항들을 먼저 살펴보자.
01. EKS 구성시 VPC 기본 요구사항
Best Practice 👍
EKS 구성시에는 다음과 같은 요구사항을 충족해야 일반적이다.
- 최소 2개 이상의 가용 영역(AZ) 사용
- 퍼블릭 서브넷과 프라이빗 서브넷의 조합 필요
- EKS 컨트롤 플레인과 워커 노드 간의 원활한 통신
- 클러스터 내부 및 외부 트래픽에 대한 적절한 라우팅 및 보안 설정
그럼 퍼블릭 서브넷과 프라이빗 서브넷에는 각각 어떤 리소스가 위치하면 좋을까.
퍼블릭 서브넷 Public Subnet
- 인터넷 게이트웨이(IGW) 연결
- ALB 또는NLB 로드밸런서 배포
- Bastion Host 및 관리용 서버 배치
프라이빗 서브넷 Private Subnet
- EKS 워커 노드(+POD) 배치
- NAT 게이트웨이를 통해 인터넷 접속
- RDS, Redis 등 내부 서비스 배치
02. VPC CIDR 및 EC2 인스턴스 타입
AWS VPC의 CIDR 크기는 클러스터 내에서 생성할 수 있는 리소스의 범위를 결정한다. 더불어, EKS EC2 인스턴스의 타입이 EKS에 구성할 수 있는 리소스 수(=pod 수)에 영향을 미치므로 함께 고려해야 한다.
AWS VPC CIDR
AWS VPC의 CIDR 크기는 EKS가 사용가능한 IP의 수를 나타낸다. 따라서 충분한(적당한) 사이즈의 CIDR 선택이 필요하다. VPC CIDR 크기는 어떻게 산정하는 것이 좋을까?
- 대역을 너무 작게 잡으면 pod를 추가로 많이~ 생성시에 ip가 부족할 수 있다.
- but, 무작정 넓게 잡으면 되는건 아니다.
- ec2의 eni가 줄 수 있는 private ip가 제한적이기 때문이다.
- 어짜피 eni수에 따라 생성 가능한 pod수가 정해져있고, 그만큼의 ip 수만 있으면 된다.
EC2 인스턴스 타입
그렇다면 이 eni 수는 어떻게 결정될까?
- EC2 인스턴스 타입별로, 최대 eni 개수가 정해진다.
- EC2인스턴스 타입이 EC2(노드)에 생성할 수 있는 최대 pod 갯수에 영향을 주는 것이다. .
- ex) c5.2xlarge 58개, c5.4xlarge 234개
따라서, 운영시에는 최대 생성이 필요한 pod 수를 고려하여 노드 인스턴스 타입을 정하고 그에 맞는 VPC ip 범위를 할당해야 한다.
(node 인스턴스 타입 -> 최대 ENI 수 -> 최대 pod 수) -> 필요한 ip 개수 -> AWS VPC CIDR 선택
03. CNI SNAT 설정
추가적인 내용으로, AWS에서는 컨테이너용 네트워크 인터페이스로 AWS VPC CNI를 사용하고 SNAT 설정이 필요하다.
CNI에 대한 자세한 내용은 다른 포스팅에서 따로 살펴보자.( [EKS] Network Design - AWS VPC CNI )
- SNAT 활성화된 경우(externalsnat = false) :
- Natgateway와 별도의 public subnet이 필요 없다.
- CNI가 Snat를 해서 igw에 publicip로 바로 전달 된다.
- SNAT 비활성화된 경우(externalsnat = true) :
- Natgateway와 별도의 public subnet이 필요하다.
- Natgateway를 통해 트래픽은 igw로 전달한다.
IDEA💡
- 우선 best practice를 이해하고 아키텍처를 구상한다.
- 올바른 인스턴스 타입과 vpc ip 대역을 선택하여 리소스를 생성한다.
- 기타 CNI 설정 등을 확인한다.
'Public Cloud > AWS' 카테고리의 다른 글
[EKS] Network Design - AWS CNI (0) | 2025.03.19 |
---|---|
[Serverless] AWS API Gateway 개념과 lambda와 사용 예시 (0) | 2023.06.06 |
[Serverless] AWS Lambda 내부 동작방식과 스로틀링 (1) | 2023.06.06 |
[Serverless] AWS Lambda 개념과 Workshop (0) | 2023.06.06 |
[Container] 도커, 쿠버네티스 Basic (0) | 2023.06.06 |