Container Orchestration/Kubernetes

Kubernetes IPVS vs iptables

Somaz 2025. 2. 3. 15:37
728x90
반응형

Overview

Kubernetes Kube-prxoy Component의 주요 개념인 IPVS vs iptables 에 대해서 알아본다.

 

 


 

IPVS 및 iptables의 개념

 

1️⃣ iptables (IP 테이블 규칙)

  • iptables는 Linux 커널에 내장된 패킷 필터링 및 NAT(네트워크 주소 변환) 프레임워크이다.
  • 패킷이 통과해야 하는 체인의 규칙을 정의하고 네트워크 트래픽을 허용, 거부, 전달 또는 수정할지 결정하는 방식으로 작동한다.

 

Kubernetes에서 작동하는 방식

  • Kubernetes는 iptables 를 사용하여 서비스와 Pod 간에 트래픽을 라우팅한다.
  • 백엔드 Pod를 순차적으로 선택하여 라운드 로빈 로드 밸런싱을 구현한다.

 

iptables의 장점

  • ✅ 안정성: Linux 시스템에서 성숙하고 널리 사용된다.
  • ✅ 단순성: 구성 및 문제 해결이 쉽다.
  • ✅ 내장 연결 추적: 기본 네트워킹에 대한 추가 조정이 필요하지 않는다.
  • ✅ 낮은 리소스 사용량(소형 클러스터의 경우): 트래픽이 적은 환경에서는 CPU/메모리 사용량이 적다.

 

iptables의 단점

  • ❌ 확장성 문제: 서비스/파드 수가 많으면 성능이 저하된다.
  • ❌ 느린 규칙 처리: 각 패킷은 일치하는 모든 규칙을 통과해야 하므로 많은 서비스에서 지연 시간이 발생한다.
  • ❌ 기본 로드 밸런싱: 고급 로드 밸런싱 기능 없이 라운드 로빈만 지원한다.

 

 


 

 

2️⃣ IPVS(IP 가상 서버)

  • IPVS는 고성능 및 확장 가능한 로드 밸런싱을 위해 설계된 Linux 커널에 내장된 레이어 4 로드 밸런서이다.
  • 순차 규칙 검사 대신 보다 효율적인 해시 테이블 접근 방식을 사용하여 패킷을 라우팅한다.

 

Kubernetes에서 작동하는 방식

  • IPVS 모드의 Kubernetes' kube-proxy 는 커널 기반 로드 밸런싱을 활용하여 서비스 트래픽을 처리한다.
  • 라운드 로빈, 최소 연결, 소스 해싱과 같은 여러 로드 밸런싱 알고리즘을 지원한다.

 

IPVS의 장점

  • ✅ 고성능: 더 빠른 패킷 처리를 통한 커널 수준 로드 밸런싱
  • ✅ 확장성: 다수의 서비스와 백엔드 포드를 효율적으로 처리
  • ✅ 고급 로드 밸런싱: 고정 세션, 가중 로드 밸런싱 및 기타 알고리즘을 지원
  • ✅ 효율적인 규칙 관리: 선형 규칙 검사 대신 해시 테이블을 사용하여 대기 시간을 줄인다.

 

IPVS의 단점

  • ❌ 복잡성: 최적의 성능을 위해서는 조정(예: conntrack, 시간 초과)이 필요하다.
  • ❌ conntrack에 대한 종속성: Linux 연결 추적에 크게 의존하므로 적절하게 조정되지 않으면 패킷 삭제와 같은 문제가 발생할 수 있다.
  • ❌ 소규모 클러스터에 대한 오버헤드 증가: 트래픽이 적은 소규모 환경의 경우 리소스 집약도가 약간 더 높다.

 

 


 

 

iptables vs IPVS

Feature iptables IPVS
Load Balancing Method Round-robin Efficient kernel-level load balancing
Connection Tracking Built-in, simpler Relies on conntrack (can be complex)
Performance (Low Traffic) Stable and efficient Overkill for small workloads
Performance (High Traffic) Can slow down with many rules Optimized for high throughput
Advanced Load Balancing ❌ (No session persistence, no weights) ✅ (Persistence, weighted round-robin)
Configuration Complexity Simple and easy to debug More complex to tune

 

 


 

 

🏷 When to Use Each

 

✅ iptables를 사용하면 좋은 경우

  • 낮은 트래픽 또는 소규모 클러스터(개발 또는 테스트)
  • 간단한 네트워크 라우팅이면 충분하다.
  • 안정성과 단순성은 성능보다 우선시된다.

 

✅ IPVS를 사용하면 좋은 경우

  • 트래픽이 많은 또는 대규모 생산 클러스터
  • 고급 로드 밸런싱(예: 세션 지속성, 가중 라우팅)이 필요하다.
  • 더 짧은 대기 시간과 더 나은 성능 확장이 필요하다.

 

마무리

🔔 요약
  • iptables → 간단하고 안정적이며 소규모, 트래픽이 적은 환경에 더 적합
  • IPVS → 고성능, 확장 가능 및 복잡한 로드 밸런싱 요구 사항이 있는 프로덕션 시스템에 더 적합

 


Reference

https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md

728x90
반응형