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를 사용하면 컨테이너 오케스트레이션 시스템에서 네트워킹을 쉽게 관리하고 확장할 수 있다.