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
반응형
'Container Orchestration > Kubernetes' 카테고리의 다른 글
Helm Base App Chart 생성(With ArgoCD) (0) | 2025.01.06 |
---|---|
Helm Chart 생성 및 패키징 (gh-pages) (2) | 2024.12.20 |
Kubernetes Operator(CRD, CR) 생성(With kubebuilder) (0) | 2024.12.17 |
Kubernetes Operator 및 Custom Resource Definitions(CRDs) 이해하기 (0) | 2024.12.12 |
Kubernetes Headless Service란? (0) | 2024.12.03 |