Kubernetes

Kubernetes Network 구성

DevOps Engineer 2025. 3. 25. 01:18
728x90

Kubernetes는 다음과 같은 네트워크 요구 사항을 기본 가정으로 합니다:

  1. 모든 Pod는 클러스터 내 다른 Pod와 통신 가능해야 한다.
  2. 노드에서 실행 중인 모든 Pod는 동일한 IP 주소 체계를 공유해야 한다.
  3. NAT 없이 Pod 간 직접 통신이 가능해야 한다.

이러한 요구사항을 충족시키기 위해 Kubernetes는 CNI 플러그인, Service IP, kube-proxy, Network Policy 등을 이용합니다.

 

주요 구성 요소

1. CNI 플러그인

  • Pod 간 통신을 위한 네트워크 인터페이스를 설정
  • Pod에 IP를 할당하고 라우팅 설정을 적용
  • 예시: Calico, Flannel, Cilium, Weave

 

2. kube-proxy

  • Service 리소스의 가상 IP로 요청이 들어오면 실제 Pod IP로 라우팅되도록 설정
  • 내부적으로 iptables 또는 IPVS를 사용해 라우팅 테이블을 구성

모드 종류

모드 설명
iptables 모드 iptables 규칙을 사용해 패킷을 Pod로 전달
ipvs 모드 Linux IPVS를 사용해 더 효율적이고 고성능의 로드밸런싱 제공

 

iptables vs IPVS

항목 iptables IPVS
구조 규칙 기반 순차적 검사 커널 내 해시 테이블 기반
성능 규칙 수 많아지면 성능 저하 높은 성능 유지
관리 단순함 약간 복잡 (의존 모듈 필요)
사용 시기 소규모 클러스터나 단순 구성 대규모 트래픽 처리, 고성능 요구 시

예시

  • iptables 모드에서 특정 ClusterIP에 요청 시:
iptables -t nat -L -n | grep <ClusterIP>

 

→ 해당 ClusterIP로 오는 요청을 실제 Pod IP로 DNAT 설정

  • ipvs 모드에서는:
ipvsadm -Ln

→ Service IP가 Virtual Server로 설정되고, 그 뒤에 여러 Real Server(Pod IP)가 붙음

 

외부와의 통신

  • NodePort, LoadBalancer, Ingress Controller 등을 통해 외부 요청을 Cluster 내부로 전달
  • 클러스터 외부에서 Pod에 직접 접근하지 않고, kube-proxy를 통해 요청 분배

 

네트워크 정책

  • Pod 간 통신을 제어하기 위해 NetworkPolicy 사용
  • 대부분의 CNI 플러그인이 이를 지원하며, 세부적인 보안 정책을 정의 가능

 

요약

 

항목 설명
CNI 플러그인 Pod 네트워크 설정 및 IP 할당
kube-proxy 서비스 요청을 Pod로 전달 (iptables or IPVS 이용)
iptables 순차적인 방화벽/라우팅 규칙으로 트래픽 처리
IPVS 커널 기반 고성능 로드밸런싱
NetworkPolicy 보안 제어, 허용된 통신만 가능하게 제한
728x90