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개의 파드를 생성할 수 있습니다.
최초 노드를 구성할 때 최대 구성할 수 있는 파드 수량을 파악하고 적절한 인스턴스 유형을 선택할 필요가 있습니다.