CNI(Container Network Interface)
- 컨테이너 관리 시스템에서 네트워킹을 구성하고 관리하기 위한 표준 인터페이스
- 쿠버네티스에서 kubenet이라는 이름으로 제공하지만, 기능이 매우 제한적이다.
- 그래서 대부분 Flannel, Calico, Weavenet, NSX 등의 3rd-party 플러그인 사용
→ 컨테이너화된 애플리케이션의 네트워크 연결을 관리한다.

- 위 이미지에서 UI Container은 172.17.0.2, Login Container은 172.17.0.2로 컨테이너들의 IP가 같음.
- 이 고유한 IP를
veth
라고 한다.
- 컨테이너간 통신에서 동일 IP 사용으로 통신시 에러가 발생할 수 있음.

- 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