CNI
🔹 CNI (Container Network Interface)란?
CNI는 컨테이너 네트워크 인터페이스의 약자로, 컨테이너의 네트워크 설정을 관리하는 표준화된 인터페이스이다.
쿠버네티스는 다양한 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
2️⃣ Calico CNI가 설치되면, 클러스터 내의 Pod들에 대해 IP 주소 할당 및 네트워크 구성을 자동으로 처리한다.
📌 CNI 작동 흐름 예시
1️⃣ Pod 생성 요청
- 쿠버네티스에서 새로운 Pod을 생성하고, 해당 Pod에 대해 IP 주소를 할당하려고 한다.
2️⃣ CNI 플러그인 호출
- 쿠버네티스는 설치된 CNI 플러그인에 요청하여 Pod에 IP 주소 할당 및 네트워크 연결을 요청한다.
3️⃣ CNI 플러그인 처리
- CNI 플러그인은 IP 주소를 할당하고, Pod에 네트워크 인터페이스를 설정하며, 네트워크 정책을 적용한다.
4️⃣ Pod IP 할당 완료
- Pod에 IP 주소가 할당되고, 해당 Pod는 다른 Pod와 통신할 준비가 된다.
📌 CNI 플러그인 선택
- Flannel은 단순하지만, 네트워크 정책 기능이 부족하고, 확장성에 제한이 있을 수 있다.
- Calico는 네트워크 정책 및 보안에 뛰어난 기능을 제공하며, 대규모 클러스터에서 많이 사용된다.
- Weave는 사용이 간편하고, 저지연의 네트워크를 제공한다.
- Cilium은 보안과 네트워크 성능을 강화할 수 있다.
✅ 정리
✔ CNI는 컨테이너 네트워크 인터페이스 표준으로, Pod 간의 네트워크 연결 및 IP 할당을 관리한다.
✔ CNI 플러그인을 통해 다양한 네트워크 기술을 활용할 수 있으며, 네트워크 정책과 보안을 설정할 수 있다.
✔ Flannel, Calico, Weave, Cilium 등의 CNI 플러그인이 사용된다.
🚀 CNI는 쿠버네티스 클러스터 내에서 컨테이너의 네트워크 연결을 관리하는 핵심 기술!