Home
home

03. Amazon EKS - VPC CNI Driver

1. CNI(Container Network Interface) 란?

: CNI(Container Network Interface)는 컨테이너 네트워킹을 위한 표준 인터페이스를 정의하는 기술로 CNCF(Cloud Native Computing Foundation) 프로젝트로 개발되었습니다.
컨테이너 기반의 애플리케이션의 상호 통신을 위해 표준 네트워크 인터페이스인 CNI가 필수적입니다.
CNI 주요 역할
컨테이너를 생성할 때 네트워크 인터페이스를 생성하고 연결
컨테이너를 삭제할 때 관련 네트워크 자원 해제
다양한 네트워크 플러그인과 통합
CNI 동작 원리
컨테이너 런타임에서 CNI 플러그인 호출
CNI 플러그인에서 정의된 네트워크 구성 정보를 실행
컨테이너 네트워크 인터페이스 추가
IP 주소 할당 및 라우팅 구성
캡슐화 및 네트워크 정책 적용
작업 결과를 컨테이너 런타임에게 반환
CNI 플러그인 종류
1.
Flannel
간단하고 경량화된 CNI 플러그인
소규모 클러스터나 기본적인 네트워크 요구 환경에 적합
2.
Calico
고급 네트워크 정책과 보안 기능을 제공하는 CNI 플러그인
대규모 클러스터와 세밀한 보안 요구 환경에 적합
3.
Cilium
eBPF(Extended Berkeley Packet Filter)를 기반으로 동작하는 고성능 CNI 플러그인
전통적인 iptables 방식에 비해 높은 성능과 유연성 제공
네트워크 정책, 보안, 모니터링 등 고급 기능을 활용하기 위한 환경에 적합
4.
Kubenet
쿠버네티스에서 기본적으로 제공하는 네트워킹 옵션
제한된 기능을 제공하며, 일반적으로 외부 CNI 플러그인으로 대체하여 사용
5.
VPC CNI
AWS의 EKS 환경에서 쿠버네티스 클러스터를 위한 CNI 플러그인
AWS의 VPC와 연계하여 네트워킹에 최적화 구성

2. Amazon VPC CNI

: Amazon EKS 환경에서 CNI를 구성할 때 효율적인 네트워킹을 위해 Amazon VPC CNI를 활용하는 것을 권장합니다.
VPC CNI 특징
Native VPC 네트워킹 지원
Amazon VPC 서비스와 연계하여 네트워킹 환경을 구성
다양한 VPC 서비스와 통합
Amazon VPC에서 제공하는 다양한 기능과 통합하여 활용
파드와 노드는 동일한 IP 대역을 할당
Amazon VPC의 IP 대역을 파드와 노드에 할당하여 사용
패킷 캡슐화 없이 통신하여 낮은 지연
VPC에서 트래픽을 파드로 직접적인 라우팅 가능
구성하는 노드 유형에 따라 파드에 할당 가능한 IP 주소 수량의 제한
오픈 소스 프로젝트
Github을 통해 유지 관리하는 오픈 소스 프로젝트
VPC CNI 통신 흐름
[Caption] Amazon VPC CNI 통신 흐름
노드와 파드는 동일한 VPC IP 대역을 사용합니다.
서로 다른 노드에 위치한 파드 간에 통신을 할 때 노드와 파드가 동일한 IP 대역에 따라 별도의 캡슐화 없이 통신을 수행합니다.
VPC의 라우팅 테이블에서 파드로 직접적인 경로를 선언할 수 있습니다.
VPC CNI의 최대 파드 구성 수량
: 구성되는 파드의 성능을 논외로 노드의 인스턴스 유형에 따라 할당할 수 있는 IP 수량이 정해져 있어 파드 수량에 제약이 있습니다.
VPC CNI 환경에서 파드에 IP 주소를 할당하는 방식은 2가지 형태가 있으며, 이에 따라 최대 파드 구성 수량이 달라집니다.
1.
Secondary IPv4 Address
노드의 인스턴스 유형에 따라 구성할 수 있는 최대 ENI(Elastic Network Interface) 수가 정해져 있습니다.
또한 ENI 별로 IP 주소를 할당하는 Slot 수도 정해져 있습니다.
예를 들어 m5.large 유형은 최대 ENI 수는 3이고, ENI 당 Slot 수는 10입니다. (3x10으로 30개의 IP 할당 가능)
ENI 별로 첫 번째 Slot에는 Primary IP 주소로 파드에 할당이 불가합니다.
노드 별로 구성되는 aws-node와 kube-proxy는 노드와 동일한 IP 주소를 사용합니다.
최대 파드 수량 계산법 = ENI 수 x (ENI 당 Slot 수 - 1) + 2
[Caption] Secondary IPv4 Address 방식의 최대 파드 수량 산정
2.
IPv4 Prefix Delegation
ENI의 Slot에 IP 주소가 아닌 Prefix(IP 대역)를 할당합니다.
Prefix 단위는 /28로 16개의 IP 주소를 할당하는 대역
해당 방식은 Nitro System 계열의 인스턴스만 해당합니다.
vCPU 30코어 미만은 110개로 제한되고 그 이상은 250개로 제한됩니다.
[Caption] IPv4 Prefix Delegation 방식의 최대 파드 수량 산정
계산식에 의해 도출한 값은 432이지만 m5.large는 vCPU 코어 수가 30개 미만으로 최종 110개의 파드를 생성할 수 있습니다.
최초 노드를 구성할 때 최대 구성할 수 있는 파드 수량을 파악하고 적절한 인스턴스 유형을 선택할 필요가 있습니다.