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

발행: (2026년 1월 4일 오전 03:55 GMT+9)
4 분 소요
원문: 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

관련 글

더 보기 »

배포 전략

Rolling Update이란 무엇인가 Kubernetes는 오래된 Pods를 새로운 Pods로 점진적으로 교체하여, 올바르게 구성하면 다운타임 없이 서비스를 제공할 수 있습니다. 작동 방식 – 일부 오래된 Pods…

kubernetes 프로젝트 #1

개요 Kubernetes에서 단일 컨테이너화된 웹 앱을 실행하고 브라우저에서 액세스합니다: 흐름: Browser → Service → Pod → Container 이 연습은 …을 보여줍니다.