Search

CNI

CNI(Container Network Interface)는 컨테이너 네트워킹을 관리하기 위한 표준 인터페이스이다. CNI는 주로 Kubernetes와 같은 컨테이너 오케스트레이션 시스템에서 사용. CNI의 주요 목적은 컨테이너가 네트워크에 연결되고, 네트워크 리소스를 사용할 수 있도록 하는 것.

CNI의 주요 개념

1.
플러그인 기반 아키텍처
CNI는 다양한 네트워크 플러그인을 지원합니다. 각 플러그인은 특정 네트워크 기능을 제공.
예를 들어, Calico, Flannel, Weave, Cilium 등이 CNI 플러그인으로 사용될 수 있다.
2.
네트워크 추가 및 삭제
CNI는 컨테이너가 생성될 때 네트워크 인터페이스를 추가하고, 컨테이너가 삭제될 때 네트워크 인터페이스를 제거한다.
이를 통해 컨테이너가 네트워크에 연결되고, IP 주소를 할당받으며, 필요한 네트워크 정책을 적용받을 수 있다.
3.
구성 파일
CNI는 JSON 형식의 구성 파일을 사용하여 네트워크 설정을 정의한다.
구성 파일에는 네트워크 이름, 플러그인 유형, IP 할당 방식 등이 포함한다.
네트워크 인터페이스란?
네트워크 인터페이스는 컴퓨터나 장치가 네트워크에 연결될 수 있도록 하는 하드웨어 또는 소프트웨어 구성 요소즉 쉽게 말해, 네트워크 인터페이스는 장치가 다른 장치와 데이터를 주고받을 수 있게 해주는 "네트워크의 문” 임.

네트워크 인터페이스의 역할

송신 : 보내거나 전달하는 것 / 수신 : 받는 것
1.
데이터 전송
네트워크 인터페이스는 데이터를 네트워크를 통해 다른 장치로 전송한다.
예를 들어, 컴퓨터에서 웹사이트를 방문할 때, 네트워크 인터페이스가 요청 데이터를 인터넷으로 전송한다.
2.
데이터 수신
네트워크 인터페이스는 네트워크를 통해 들어오는 데이터를 수신한다.
예를 들어, 웹사이트의 응답 데이터를 컴퓨터로 받아온다.
3.
IP 주소 할당
네트워크 인터페이스는 IP 주소를 할당받아 네트워크에서 고유한 식별자로 사용된다.
예를 들어, 컴퓨터가 네트워크에 연결될 때, 네트워크 인터페이스는 IP 주소를 할당받는다.

CNI의 동작 방식

1.
컨테이너 생성
Kubernetes와 같은 오케스트레이션 시스템이 새로운 컨테이너를 생성한다.
이때 CNI를 호출하여 네트워크 인터페이스를 설정한다.
2.
네트워크 인터페이스 추가
CNI 플러그인은 컨테이너에 네트워크 인터페이스를 추가한다.
IP 주소를 할당하고, 필요한 네트워크 정책을 적용한다.
3.
컨테이너 삭제
컨테이너가 삭제될 때, CNI는 네트워크 인터페이스를 제거한다.
IP 주소를 반환하고, 네트워크 리소스를 정리한다.
CNI 구성 파일의 예시
{ "cniVersion": "0.3.1", "name": "my-network", "type": "bridge", "bridge": "cni0", "isGateway": true, "ipMasq": true, "ipam": { "type": "host-local", "subnet": "10.22.0.0/16", "routes": [ { "dst": "0.0.0.0/0" } ] } }
JSON
복사
네트워크 이름my-network
플러그인 유형bridge
브리지 이름cni0
IP 할당 방식host-local
서브넷10.22.0.0/16

정리

CNI는 컨테이너 네트워킹을 관리하기 위한 표준 인터페이스이다.
플러그인 기반 아키텍처를 사용하여 다양한 네트워크 기능을 제공한다.
네트워크 인터페이스 추가 및 삭제를 통해 컨테이너가 네트워크에 연결되고, 필요한 네트워크 리소스를 사용할 수 있도록 한다.
구성 파일을 사용하여 네트워크 설정을 정의한다.
CNI를 사용하면 컨테이너 오케스트레이션 시스템에서 네트워킹을 쉽게 관리하고 확장할 수 있다.