CNI(Container Network Interface)

choko's avatar
Jun 29, 2024
CNI(Container Network Interface)
 

CNI(Container Network Interface)

  • 컨테이너 관리 시스템에서 네트워킹을 구성하고 관리하기 위한 표준 인터페이스
    • → 컨테이너화된 애플리케이션의 네트워크 연결을 관리한다.
    • 쿠버네티스에서 kubenet이라는 이름으로 제공하지만, 기능이 매우 제한적이다.
    • 그래서 대부분 Flannel, Calico, Weavenet, NSX 등의 3rd-party 플러그인 사용
 
notion image
 
  • 위 이미지에서 UI Container은 172.17.0.2, Login Container은 172.17.0.2로 컨테이너들의 IP가 같음.
    • 이 고유한 IP를 veth 라고 한다.
  • 컨테이너간 통신에서 동일 IP 사용으로 통신시 에러가 발생할 수 있음.
 
 
notion image
  • CNI를 사용하면, 브릿지 인터페이스를 만들어
    • 컨테이너 네트워크 대역대를 나눠주고,
    • 라우팅 테이블까지 생성하여
  • 노드간 컨테이너 통신을 문제없이 지원함.
 
 
 

Pod간의 통신

  • Pod 안 컨테이너끼리의 통신
    • Pod는 가상 네트워크를 공유한다. 같은 Pod의 컨테이너는 가상네트워크를 통해 통신이 가능하다
  • Pod와 Pod간 통신
    • Pod는 각자의 고유한 IP 주소(veth)를 가지고, CNI를 통한 인터페이스를 통해 Pod간 통신이 가능하다.
  • 외부 노드의 Pod와 통신
    • pod → CNI → 라우터 →CNI → 외부 pod로 통신한다.
 
 
 
 

CNI 적용하기 (Calico)

kubetcl apply -f cni-calico.yaml
 
 
 
 
 
 
 
 
 

ref
Share article

Tom의 TIL 정리방