Kubernetes에서 네트워크 기능을 담당하는 CNI(Container Network Interface) 플러그인은 클러스터 내의 파드들이 서로 통신하고 외부 네트워크와 상호작용할 수 있도록 하는 핵심 구성 요소이다. 각 CNI 플러그인은 고유한 기능과 성능, 설정 복잡성을 가지고 있으며 특정 요구 사항에 맞는 것을 선택하는 것이 중요하다.
CNI 플러그인 비교
플러그인 | 특징 | 장점 | 단점 | 적합한 환경 |
VPC | AWS VPC에 직접 통합, Pod에 VPC IP 할당 | AWS 리소스와 네이티브 통신, 고성능, 보안 그룹 적용 가능 | IP 자원 제한, 노드당 Pod 수 제한, AWS 종속적 | AWS 환경, 단순하고 빠른 네트워크가 필요한 경우, 보안 그룹 활용 |
Calico | 강력한 네트워크 정책, BGP 지원 | 세밀한 네트워크 정책 설정 가능, 대규묘 환경에서도 안정적 | 설정 방법이 복잡함 | 고급 네트워킹 기능이 필요한 환경, 대규모 클러스터 |
Cilium | eBPF 기반 고성능, 서비스 메시 기능 | eBPF를 이용한 높은 성능, 세밀한 네트워크 정책 | eBPF에 대한 이해 필요 | 고성능, 고급 기능이 필요한 환경 |
VPC CNI
AWS EKS 환경에서 사용되는 기본 CNI 플러그인으로, Kubernetes Pod에 직접 VPC 네트워크 인터페이스(ENI)를 할당해서, Pod가 VPC 내부 IP를 가지게 하는 방식 사용
장점
•
VPC 네이티브 통합
◦
Pod가 VPC의 일원이므로 다른 AWS 리소스(RDS, ELB 등)와 네이티브하게 통신
•
고성능
◦
AWS 인프라 최적화 → 높은 처리량, 낮은 지연
•
보안그룹 적용
◦
Pod에 Security Group을 설정 가능
•
간단한 관리
◦
AWS 네트워크 정책, 모니터링 도구 그대로 사용
•
노드 간 통신이 쉬움
◦
VPC 네트워크라서 별도 오버레이(X) 없이 EC2처럼 라우팅됨
단점
•
IP 부족 문제
◦
ENI당 할당 가능한 IP 수가 정해져 있음 → 노드당 Pod 수 제한
◦
대규모 클러스터에선 IP 관리 복잡
•
AWS 종속성
◦
AWS 환경에서만 사용 가능
•
ENI/Pod 연관성
◦
ENI 추가나 삭제에 따른 네트워크 관리 부담
•
탄력성 이슈
◦
ENI 리소스 부족하면 새 Pod 생성 실패 가능성
Calico
네트워크 정책을 강력하게 지원하는 CNI 플러그인으로 BGP(Border Gateway Protocol)를 활용해 고성능 네트워킹을 제공한다. Overlay 네트워크와 IP-in-IP 모드, BGP 모드를 지원한다.
장점
•
네트워크 정책 및 보안 그룹 설정 매우 유연함
•
성능이 우수하고 대규모 클러스터에 적합
단점
•
설정이 다소 복잡할 수 있음
•
네트워크 정책이 필요 없는 경우 과도한 선택일 수 있음
Cilium
BPF(eBPF)를 기반으로 하는 CNI 플러그인으로 매우 세밀한 네트워크 정책 및 보안 제어가 가능하다. L3/L4 레이어뿐 아니라 L7 레이어에서의 트래픽 필터링도 가능하다.
장점
•
고성능 및 저지연 네트워크 지원
•
매우 세밀한 네트워크 보안 및 정책 가능
•
eBPF 기반으로 추가적인 성능 최적화 가능
단점
•
상대적으로 높은 학습 곡선
•
일부 커널 버전에서의 호환성 이슈