CNI

CNIContainer Network Interface의 약자로, 컨테이너의 네트워크 설정을 관리하는 표준화된 인터페이스이다.
쿠버네티스는 다양한 CNI 플러그인을 사용하여 컨테이너 간의 네트워크 연결을 설정하고 Pod 간의 통신을 가능하게 한다. CNI는 컨테이너 런타임(예: Docker, containerd)과 네트워크 플러그인 간의 인터페이스 역할을 한다.


CNI의 역할

1. Pod 간 통신을 설정 (클러스터 내 네트워크 연결)
2. Pod에 IP 주소를 할당 (동적 IP 관리)
3. 네트워크 정책 적용 (보안 및 접근 제어)
4. 외부 네트워크와의 연결
5. 고유한 네트워크 플러그인 사용 가능 (Flannel, Calico, Weave, Cilium 등)


CNI의 작동 방식

1. Pod 네트워크 인터페이스 구성

쿠버네티스는 Pod이 생성될 때 CNI 플러그인을 호출하여 Pod에 네트워크 인터페이스와 IP 주소를 할당한다.

예시: Calico CNI 플러그인

  1. Pod 생성: Pod가 생성되면, 쿠버네티스는 CNI 플러그인에 요청하여 해당 Pod에 IP를 할당한다.
  2. CNI 플러그인 실행: CNI 플러그인(예: Calico)은 Pod에 대해 다음 작업을 수행한다:
    • IP 주소 할당
    • 네트워크 인터페이스 연결
    • 필요한 라우팅 규칙 생성
  3. Pod에 IP 할당: CNI 플러그인이 Pod에 IP 주소를 할당하고, Pod 내의 네트워크 인터페이스에 이를 연결한다.
  4. 네트워크 연결 완료: Pod는 이제 다른 Pod나 외부 네트워크와 통신할 수 있다.

2. 네트워크 정책 및 보안

CNI는 네트워크 정책을 통해 Pod 간 통신을 제한하거나 허용할 수 있다. 예를 들어, Calico는 네트워크 정책을 사용하여 Pod의 IP 주소 간 트래픽을 제어할 수 있다.


CNI 플러그인 종류

  1. Flannel: 단순한 네트워크 플러그인으로, IP 할당 및 라우팅을 처리. 주로 Overlay 네트워크를 지원.
  2. Calico: 고급 네트워크 정책 및 보안을 지원하는 CNI 플러그인. IP 라우팅과 네트워크 정책을 설정할 수 있다.
  3. Weave: 간단한 네트워크 플러그인으로, 간단한 설정과 고급 기능을 제공한다.
  4. Cilium: eBPF(Extended Berkeley Packet Filter)를 사용하는 CNI 플러그인으로, 고급 보안트래픽 관리를 지원한다.

CNI 설치 예시: Calico

  1. Helm 설치 (Kubernetes에서 관리하는 경우)
kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml
  1. Calico CNI가 설치되면, 클러스터 내의 Pod들에 대해 IP 주소 할당 및 네트워크 구성을 자동으로 처리한다.

CNI 작동 흐름 예시

  1. Pod 생성 요청
  • 쿠버네티스에서 새로운 Pod을 생성하고, 해당 Pod에 대해 IP 주소를 할당하려고 한다.
  1. CNI 플러그인 호출
  • 쿠버네티스는 설치된 CNI 플러그인에 요청하여 Pod에 IP 주소 할당 및 네트워크 연결을 요청한다.
  1. CNI 플러그인 처리
  • CNI 플러그인은 IP 주소를 할당하고, Pod에 네트워크 인터페이스를 설정하며, 네트워크 정책을 적용한다.
  1. Pod IP 할당 완료
  • Pod에 IP 주소가 할당되고, 해당 Pod는 다른 Pod와 통신할 준비가 된다.

CNI 플러그인 선택

  • Flannel은 단순하지만, 네트워크 정책 기능이 부족하고, 확장성에 제한이 있을 수 있다.
  • Calico네트워크 정책보안에 뛰어난 기능을 제공하며, 대규모 클러스터에서 많이 사용된다.
  • Weave는 사용이 간편하고, 저지연의 네트워크를 제공한다.
  • Cilium보안네트워크 성능을 강화할 수 있다.

정리

CNI는 컨테이너 네트워크 인터페이스 표준으로, Pod 간의 네트워크 연결 및 IP 할당을 관리한다.
CNI 플러그인을 통해 다양한 네트워크 기술을 활용할 수 있으며, 네트워크 정책보안을 설정할 수 있다.
Flannel, Calico, Weave, Cilium 등의 CNI 플러그인이 사용된다.

CNI는 쿠버네티스 클러스터 내에서 컨테이너의 네트워크 연결을 관리하는 핵심 기술