Kubernetes CNI (Container Network Interface) 는
컨테이너 네트워크를 구성하고 관리하기 위한 표준 인터페이스 입니다.
CNI
CNI (Container Network Interface) 는 컨테이너 네트워크를 구성하고 관리하기 위한 표준 인터페이스로, 현재 CNCF(Cloud Native Computing Foundation) 에서 관리하고 있습니다. 컨테이너 오케스트레이션 시스템(k8s 등) 에서 네트워크 설정하고 관리하는데 사용합니다.
CNI 는 다양한 형태의 컨테이너 런타임과 오케스트레이터 사이의 네트워크 계층을 구현하는 방식이 각자만의 방식으로 발전하는 것을 방지하고, 공통된 인터페이스를 사용하기 위함이 가장 큰 목적입니다.
CNI 동작 방식
CNI 는 플러그인 기반의 네트워크 설정 방식으로 동작합니다.
1. 컨테이너 런타임(ex. containerd, CRI-O 등) 이 새로운 컨테이너를 생성하고 네트워크 설정을 요청합니다.
2. CNI 플러그인이 요청받아 IP할당, 네트워크 인터페이스 생성 등의 네트워크를 구성합니다.
3. 컨테이너가 생성된 네트워크에 연결되고, 필요시 네트워크 보안, 라우팅 등의 정책을 생성합니다.
4. 컨테이너 종료와 동시에 리소스를 삭제합니다.
주요 CNI 플러그인
1. Flannel
- 가벼운 구조로, 단일 호스트 및 멀티 호스트 구성이 가능합니다.
- VXLAN, UDP 호스트 네트워스 사용 가능합니다.
2. Calico
- 대규모 컨테이너 환경(다중 클라우드 및 하이브리드 환경 등)에 용이합니다.
- 보안 그룹, ACL 등의 기능을 제공합니다.
- BGP(Border Gateway Protocol) 를 기반으로 하는 고성능 네트워크 솔루션입니다.
3. Cilium
- 컨테이너 네트워크와 서비스 디스커버리를 제공합니다.
- 성능과 보안 모두 좋으나 난이도가 어려운 편입니다.
- HTTP, gRPC 등 다양한 프로토콜을 지원합니다.
- L3/L4 뿐만 아니라 L7까지 네트워크 정책을 적용할 수 있습니다.
4. Weave Net
- 자동 네트워크 복구 기능과 암호화된 네트워크 통신을 지원합니다.
5. Kube-Router
- k8s 에서 native routing 을 지원합니다.
CNI 플러그인 선택 및 설정 방법
상기와 같이 다양한 CNI 플러그인이 있고, 여러 환경에 선택적으로 플러그인을 설정할 수 있습니다.
k8s 클러스터에 어떤 CNI 플러그인이 가장 적합할지 고심하여 선택 후 Helm 혹은 install manifest 로 배포하여
CNI 설정파일(/etc/cni/net.d) 를 확인합니다.
최종적으로는 kubectl get pods -n kube-system 명령으로 Pod 의 정상 동작 및 로그 등을 확인합니다.
Kubernetes에서 CNI는 컨테이너 간 네트워킹을 관리하는 핵심 요소입니다.
다양한 CNI 플러그인이 있으며, 각각의 특성과 장단점을 이해하고 환경에 맞는 적절한 플러그인을 선택하는 것이 중요합니다.
네트워크 요구사항, 보안 정책, 관리 복잡성 등을 고려하여 최적의 CNI 솔루션을 선택해야 합니다.
최적의 CNI 를 선택하고 설정하는 것은 클러스터의 성능과 보안, 더 나아가 가격 정책까지 발전시키는 중요한 요소입니다.
감사합니다.
'Infra > Kubernetes' 카테고리의 다른 글
secret (0) | 2025.03.10 |
---|---|
pv / pvc (0) | 2025.03.10 |
Helm (1) | 2025.02.27 |
서비스 (0) | 2025.02.21 |
CRI & 컨테이너 런타임 (0) | 2025.02.20 |