본문 바로가기
개발/개발공부

Kubernetes CNI / Container Network Interface, 네트워크

by 치킨개발자 2023. 6. 4.
728x90

Kubernetes Container Network Interface(CNI)


컨테이너의 Network, 즉 통신관련된 부분을 관리하기 위한 표준 인터페이스

CNCF(Cloud Native Computing Foundation)에서 프로젝트로 관리, 표준으로 관리

CNCF, 모회사는 리눅스 재단, IT는 모두 리눅스다..

 

- CNI: 컨테이너 런타임과 네트워크 사이에서 표준 인터페이스를 제공, 구성, 관리해줌. 여러 컨테이너 런타임에서 동일한 구조로 가져갈 수 있도록 도와줌

- Plugin 구조: 표준 인터페이스를 통해 사용자의 환경과 요구에 맞춰서 원하는 플러그인을 선택하여 사용 가능

- 3rd-party plugin: Flannel, Calico, Clilum 등 다양한 종류의 네트워크 솔루션과 통합하여 사용 가능

 

기본으로 제공해주는 kubenet이라는 자체적인 플러그인이 있는데 제한된 기능을 제공

기능이 제한적이지만 simple한 부분에 있어서는 괜찮다는 글이 존재

 

(참고)kubenet vs azure-cni vs aks

 

AKS Networking Deep Dive: Kubenet vs Azure-CNI vs Azure-CNI (overlay)

Kubernetes networking enables you to configure communication within our k8s network. When deploying a AKS cluster, there are three…

inder-devops.medium.com

반응형

CNI 3rd-party plugins


CNI를 써야하는 이유

- 기능/성능: 정교한 네트워크 정책, 보안, 로깅, 모니터링, QOS, 부하등에 있어서 다양한 기능을 통해 최적화 및 높은 퍼포먼스 제공 가능

- 환경에 맞게 사용: 각 플러그인마다 제공되는 기능들이 상이하여, 원하는 환경에 맞게 사용 가능

- 표준인터페이스 계승: CNI는 표준인터페이스로 다양한 플러그인을 지원하기 때문에, 특정 솔루션에 종속되지 않고 다양하게 사용 가능

 

실제로 다양한 CNI가 있고, Benchmark와 성능을 비교해주는 글도 존재

 

Benchmark results of Kubernetes network plugins (CNI) over 10Gbit/s network

New Version available : 2020

itnext.io

 

간단하게 몇가지를 비교를 해보면,

Flannel - 가벼운 구조, 단일 호스트 및 멀티 호스트 구성 가능
- VXLAN, UDP, 호스트 네트워크 사용 가능
- 간단한 설정과 배포
쉬움
Calico - 대규모 컨테이너 환경에 용이
- BGP프로토콜(Border G/W Protocol) 사용하여 라우팅, 통신 관리
- 보안 그룹, ACL등의 기능 제공
- 다중 클라우드 및 하이브리드 환경에 좋음
보통
Cilium - 컨테이너 네트워크와 서비스 디스커버리 제공
- eBPF 필터를 통해 네트워크 패킷 필터링 처리, 성능, 보안에 모두 좋음
- L7네트워크 정책도 지원
- HTTP, gRPC등 다양한 프로토콜에 대해 지원
어려움

주관적으로 난이도 별로 뽑아서 정리를 해보며 찾아봤는데, 실제로 플러그인 별 지원기능에 차이가 존재

간단하게 쓰려면 Flannel을 쓰고, 반대로 Cilium을 사용하면 eBPF필터를 통해 커널레벨에서까지 분석/관리가 가능

네트워크 정책도 달라서 Flannel같은 경우에는 제공하는 것이 없고(보안에 취약), Calico나 Cilium은 Ingress, Egress 둘다 제공

Calico, 종합적으로 봤을 때는 적절한 기능과 적절한 난이도를 가진 것 같음

즉, 상황에 맞게 적절한 CNI plugin을 찾아서 사용하면 될 것으로 보임

네트워크 자체에 탄탄한 기초지식을 보유하는 것이 중요해보여서.. 더 열심히 공부를 📚

반응형

댓글