Kube-Proxy와 CNI: 쿠버네티스 네트워킹의 핵심

발행: (2026년 1월 4일 오전 03:55 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Overview

Kubernetes 네트워킹은 간단해 보입니다: 각 Pod는 고유한 IP 주소를 받고, Service는 자동으로 트래픽을 적절한 Pod로 라우팅합니다. 이 단순함은 두 핵심 구성 요소에 의해 구현됩니다:

  • Container Network Interface (CNI)
  • kube-proxy

이 두 요소가 IP 할당, 네트워크 인터페이스 설정, 라우팅, 그리고 클러스터 전반에 걸친 서비스 로드밸런싱을 담당합니다.

kube-proxy

kube-proxy는 Service IP와 포트를 실제 Pod 엔드포인트로 변환하여 Service가 동작하도록 합니다.

  • Service IP 안정성 – kube-proxy는 Service IP가 기본 Pod가 일시적이라도 안정적인 엔드포인트로 유지되도록 보장합니다.
  • 라우팅 규칙 생성 – Service 또는 그 엔드포인트가 생성될 때, kube-proxy는 노드에 iptables 또는 IPVS 규칙을 설치해 Service IP에서 해당 Pod로 트래픽을 전달합니다.
  • 동적 업데이트 – Service를 지원하는 Pod가 추가되거나 제거되면, kube-proxy는 커널 규칙을 업데이트하여 서비스 가용성을 유지합니다.
  • 로드 분산 – 커널 네트워킹(iptables 또는 IPVS)을 활용해 kube-proxy는 들어오는 트래픽을 Service를 구현하는 여러 Pod에 분산시킵니다.
  • kube-proxy가 없을 경우 – Service IP는 존재하지만 Pod로 트래픽을 전달하지 못합니다; kube-proxy가 Service IP와 포트를 실제 Pod 엔드포인트에 연결합니다.

Container Network Interface (CNI)

CNI 플러그인은 Pod 수준의 네트워킹을 담당하여 Pod가 노드 내부 및 노드 간에 통신할 수 있게 합니다.

  • IP 할당 – 각 Pod는 클러스터 IP 풀에서 고유한 IP 주소를 받습니다.
  • 인터페이스 생성 – CNI는 Pod를 위해 veth 페어를 만들고, 한쪽 끝을 Pod의 네트워크 네임스페이스에, 다른 쪽 끝을 호스트에 배치합니다.
  • 라우팅 구성 – CNI는 라우팅 규칙을 설정해 Pod가 다른 노드에 있는 Pod와 통신할 수 있도록 하며, 일반적으로 호스트 라우팅 테이블이나 오버레이 네트워크를 구성합니다.
  • 네트워크 격리 – 네임스페이스와 인터페이스를 관리함으로써 CNI는 Pod 간 격리를 보장하면서도 필요에 따라 통신할 수 있게 합니다.

이 두 구성 요소—Service 라우팅을 담당하는 kube-proxy와 Pod 네트워킹을 담당하는 CNI—가 Kubernetes 네트워킹의 핵심을 이루며, 전체 클러스터에 걸친 원활한 통신을 가능하게 합니다.

Back to Blog

관련 글

더 보기 »

쿠버네티스 클라우드 환경, 전사적 가시성 확보할 때

클라우드 성능은 여전히 안개 속에 있다. 많은 기업이 클라우드 전환을 마쳤거나 진행 중이지만, 정작 클라우드 환경 전반에 대한 가시성을 충분히 확보하고 있는지에 대해서는 여전히 의문이 남는다. 현재 어떤 도구를 사용하고 있는지, 그 도구가 실제로 효과적인지, 그리고 클라우드 뿐 아니라...