Ssoon

[2주차] EKS Networking - Secondary IP mode 본문

AWS EKS Workshop Study

[2주차] EKS Networking - Secondary IP mode

구구달스 2023. 5. 2. 21:54
CloudNet@ 팀의 AWS EKS Workshop Study 2주차 정리입니다.

 

CNI (Container Network Interface)

  • Kubernetes 클러스터에서 사용되는 네트워킹 플러그인
  • 각 컨테이너에 IP 주소를 할당하고 컨테이너 간의 통신을 위해 네트워크 인터페이스를 설정

 

VPC CNI

EKS는 쿠버네티스 Pod 네트워킹을 구현하기 위해 공식적으로 VPC CNI 플러그인을 지원

CNI Binary + IPAMd

CNI Binary

  • Pod 간 통신을 활성화하도록 Pod 네트워크를 설정
  • 새 Pod가 node에 추가되거나 기존 Pod가 node에서 제거될 때 kubelet에 의해 호출

IPAMd (IP Address Management demon)

  • node 에서 ENI 관리
  • 사용 가능한 IP 주소 또는 prefix Warm Pool 유지

 

CNI 플러그인과 L-IPAM 간 프로세스 간 통신

https://github.com/aws/amazon-vpc-cni-k8s/blob/master/docs/cni-proposal.md#local-ip-address-manager-l-ipam

  • 새 Pod가 node에서 스케줄링되면 kubelet은 CNI 바이너리를 호출합니다. 
  • CNI 바이너리는 L-IPAMD(Local IP Address Manager)를 호출하여 새 Pod의 IP 주소를 가져옵니다. 

 

 

Warm Pool

  • Warm Pool의 ENI 및 IP 주소 수는 WARM_ENI_TARGET, WARM_IP_TARGET, MINIMUM_IP_TARGET 이라는 환경 변수를 통해 구성됩니다.

WARM_ENI_TARGET

  • 데몬이 준비 상태로 유지해야 하는 ENI 수 (기본값은 1)

WARM_IP_TARGET

  • 미리 할당하고 유지할 IP 주소 수

MINIMUM_IP_TARGET

  • 항상 할당할 최소 IP 주소 수

 

 

VPC CNI의 기본 모드 : Secondary IP mode

  • Worker Node에 aws-node라는 Daemonset으로 배포
  • 보조 ENI는 서브넷에서 IP 주소를 예약합니다.

 

EKS VPC CNI Plugin Architecture

https://aws.github.io/aws-eks-best-practices/networking/vpc-cni/

 

1. 노드를 찾아 Pod을 할당

2. kubelet 에서 VPC CNI 으로 Pod 에 할당될 IP 요청

3. VPC CNI 에서 L-IPM 으로 새로운 Pod 에 할당될 IP 요청

4. L-IPAM 은 VPC CNI로 새로운 Pod 에 할당될 IP 반환

5. Pod에 대한 네트워크 네임스페이스를 설정

6. VPC CNI 에서 kubelet 으로 Pod 에 할당될 IP 반환

7. 새로운 Pod에 IP 할당

 

 

IP 주소 풀이 모두 사용되면 플러그인은 자동으로 다른 ENI(eth2) 를 인스턴스에 연결하고 다른 보조 IP 주소 집합을 해당 인터페이스에 할당합니다

 

Node 에 배포할 수 있는 최대 Pod 수

(인스턴스 유형에 대한 네트워크 인터페이스 수 × (네트워크 인터페이스당 IP 주소 수 - 1)) + 2

인스턴스 유형별 네트워크 인터페이스당 IP 주소

Comments