Kubernetes에서 Container가 실행되기 위해서는 Network 연결이 필요합니다.
Pod는 생성될 때 고유한 IP를 할당받고 다른 Pod와 통신할 수 있어야 합니다.
하지만 Kubernetes 자체는 Pod Network를 직접 생성하지 않습니다.
이 역할을 담당하는 것이 CNI(Container Network Interface)입니다.
예:
Pod 생성
↓
kubelet 요청
↓
CNI Plugin 실행
↓
Network Interface 생성
↓
IP 할당
↓
Pod 통신 가능
CNI 구조를 이해하면 Kubernetes Network 장애 분석과 Cluster 통신 구조를 깊게 이해할 수 있습니다.
| 구성 요소 | 역할 |
|---|---|
| CNI | Pod Network 생성 |
| CNI Plugin | Network 구성 실행 |
| kubelet | CNI 호출 |
| IPAM | IP 주소 관리 |
| Pod | Application 실행 |
CNI는 Kubernetes Network의 기반 계층입니다.
Kubernetes CNI란?
CNI(Container Network Interface)는 Container Network를 구성하기 위한 표준 규격입니다.
Kubernetes는 특정 Network 기술을 직접 포함하지 않고 CNI Plugin을 통해 Network를 구성합니다.
구조:
kubelet
↓
CNI Interface
↓
CNI Plugin
↓
Network 생성
이 구조 때문에 Kubernetes는 다양한 Network Solution을 사용할 수 있습니다.
Kubernetes Network 기본 원칙
Kubernetes는 다음 Network 원칙을 따릅니다.
원칙 1
모든 Pod는 고유한 IP를 가져야 합니다.
원칙 2
Pod는 다른 Pod와 직접 통신할 수 있어야 합니다.
원칙 3
Node에서도 Pod와 통신할 수 있어야 합니다.
CNI가 이러한 환경을 만들어 줍니다.
Kubernetes CNI 동작 과정
Pod 생성 과정:
Pod 생성 요청
↓
Scheduler Node 선택
↓
kubelet 실행
↓
Container Runtime 호출
↓
CNI Plugin 실행
↓
Network Namespace 생성
↓
Virtual Ethernet 연결
↓
IP 할당
↓
Pod 실행
CNI는 Container 시작 과정에서 Network를 준비합니다.
Kubernetes CNI Architecture
전체 구조:
Pod
↓
Network Namespace
↓
veth Interface
↓
Bridge / Overlay Network
↓
Node Network
↓
Other Pod
Node 내부 Network와 Cluster Network를 연결합니다.
Kubernetes CNI Plugin 종류
대표적인 CNI Plugin:
| Plugin | 특징 |
|---|---|
| Calico | NetworkPolicy 지원, 고성능 |
| Flannel | 간단한 Overlay Network |
| Cilium | eBPF 기반 고급 Network |
| Weave | 쉬운 구성 |
환경에 따라 선택합니다.
Kubernetes Calico 구조
Calico는 Production 환경에서 많이 사용됩니다.
구조:
Pod
↓
veth
↓
Calico Node
↓
BGP / Overlay
↓
다른 Node Pod
특징:
- 높은 성능
- NetworkPolicy 지원
- 확장성 우수
Kubernetes Flannel 구조
Flannel은 단순한 Overlay Network Plugin입니다.
구조:
Pod Network
↓
VXLAN Tunnel
↓
Node 간 통신
장점:
- 쉬운 구성
- 학습 환경 적합
단점:
- 고급 Network 기능 제한
Kubernetes Cilium 구조
Cilium은 eBPF 기반 Network Plugin입니다.
특징:
- 고성능 Packet 처리
- Advanced Security
- Observability 제공
구조:
Pod
↓
eBPF Program
↓
Linux Kernel
↓
Network 처리
Cloud Native 환경에서 많이 활용되고 있습니다.
Kubernetes IPAM 역할
CNI는 IP 주소 관리 기능도 필요합니다.
IPAM(IP Address Management)은:
- Pod IP 할당
- IP Pool 관리
- IP 반환
역할을 담당합니다.
예:
Pod 생성
↓
10.244.1.10 할당
Pod 삭제
↓
IP 반환
Kubernetes CNI와 kube-proxy 차이
혼동하기 쉬운 부분입니다.
| 구분 | 역할 |
|---|---|
| CNI | Pod Network 생성 |
| kube-proxy | Service Traffic Routing |
예:
Pod IP 생성
↓
CNI
Service 접근
↓
kube-proxy
서로 다른 역할을 수행합니다.
Kubernetes CNI 장애 원인
대표적인 문제:
| 원인 | 설명 |
|---|---|
| CNI Plugin 오류 | Network 생성 실패 |
| IP 부족 | Pod IP 할당 실패 |
| Overlay 문제 | Node 간 통신 실패 |
| Routing 오류 | Packet 전달 실패 |
| Configuration 오류 | 잘못된 설정 |
Network 장애 분석 시 CNI 확인이 필요합니다.
Kubernetes CNI 상태 확인 방법
CNI Plugin 확인:
kubectl get pods -n kube-system
예:
calico-node Running
CNI Log 확인:
kubectl logs calico-node -n kube-system
Network Plugin 상태를 확인합니다.
Kubernetes Pod Network 장애 분석 순서
실제 운영 순서:
1단계
Pod IP 확인
kubectl get pods -o wide
↓
2단계
CNI Plugin 확인
kubectl get pods -n kube-system
↓
3단계
Network Interface 확인
ip addr
↓
4단계
Route 확인
ip route
↓
5단계
Packet 분석
Network Layer별로 확인합니다.
Kubernetes CNI와 NetworkPolicy 관계
NetworkPolicy는 CNI Plugin이 실제로 적용합니다.
구조:
NetworkPolicy 생성
↓
CNI Plugin 확인
↓
Firewall Rule 적용
↓
Traffic 제한
따라서 NetworkPolicy 지원 여부는 CNI 선택에서 중요합니다.
Kubernetes CNI 성능 관리
대규모 환경에서는:
- Packet Latency
- Bandwidth
- IP 관리
- Node 간 Traffic
을 관리해야 합니다.
CNI 선택이 Cluster 성능에 영향을 줍니다.
Kubernetes CNI 보안
CNI는 Network Security와 연결됩니다.
관리:
- NetworkPolicy
- Traffic Control
- Encryption
- Zero Trust Network
Enterprise Kubernetes 환경에서 중요합니다.
Kubernetes CNI와 Observability
현대 CNI는 Network 관찰 기능도 제공합니다.
확인:
- Network Flow
- Connection 상태
- Latency
- Packet Drop
특히 Cilium은 eBPF 기반 Observability 기능을 제공합니다.
Kubernetes CNI 운영 전략
Production 환경:
CNI 선택
↓
IP 계획 설계
↓
NetworkPolicy 적용
↓
Monitoring 구성
↓
장애 대응 준비
안정적인 Cluster Network를 구축할 수 있습니다.
Kubernetes CNI 장점
| 장점 | 설명 |
|---|---|
| 표준 구조 | 다양한 Plugin 지원 |
| 확장성 | 대규모 Cluster 지원 |
| 유연성 | 환경별 선택 가능 |
| Network 관리 | Pod 통신 제공 |
CNI는 Kubernetes Network의 기본 기반입니다.
자주 묻는 질문
Kubernetes가 자체적으로 Network를 만들지 않나요?
아닙니다.
CNI Plugin을 통해 Network를 구성합니다.
CNI와 kube-proxy 중 어떤 것이 더 중요한가요?
둘 다 역할이 다릅니다.
CNI는 Pod 연결, kube-proxy는 Service Routing을 담당합니다.
Production 환경에서는 어떤 CNI를 많이 사용하나요?
Calico, Cilium 등이 많이 사용되며 환경 요구사항에 따라 선택합니다.
마무리
Kubernetes CNI는 Pod Network를 생성하고 Container 간 통신 환경을 제공하는 핵심 Network Component입니다.
| 구성 요소 | 역할 |
|---|---|
| kubelet | CNI 호출 |
| CNI Plugin | Network 생성 |
| IPAM | IP 관리 |
| Pod Network | Container 통신 |
CNI 구조를 이해하면 Kubernetes Network 장애 원인과 Cluster 통신 흐름을 정확하게 분석할 수 있습니다.
다음 글에서는 Kubernetes 보안 통신 구조인 Kubernetes NetworkPolicy 완벽 가이드! Pod Traffic 제어와 Zero Trust Network 보안 구조 이해하기를 진행하겠습니다.