Kubernetes에서 여러 Pod를 운영하다 보면 특정 Pod만 CPU가 튀거나 응답이 느려지는 경우가 있음.
Pod A → 50ms
Pod B → 60ms
Pod C → 3초
기본 Kubernetes Service는 Pod C가 느리다고 해서 자동으로 해당 Pod를 제외해주지는 않음.
HPA를 사용하면 CPU 증가에 따라 Pod를 추가할 수 있지만, 느린 Pod를 직접 피하는 방식은 아님.
그래서 Service Mesh를 찾아봄.
Linkerd
Linkerd는 Pod에 Proxy를 붙여 서비스 간 통신을 관리함.
특히 Latency-aware Load Balancing을 통해 최근 응답시간이 빠른 Endpoint를 선호하도록 트래픽을 분산할 수 있음.
Pod A → 50ms
Pod B → 60ms
Pod C → 3초
↓
Pod C 트래픽 감소
중요한 건 CPU를 직접 보고 Pod를 제외하는 것은 아니라는 것.
CPU가 높더라도 응답이 정상적이면 그대로 사용할 수 있고, CPU 부하 때문에 실제 응답시간이 느려졌다면 그 결과를 기반으로 트래픽이 조절되는 방식임.
Istio와 비교
Istio는 Envoy Proxy를 사용하고, Outlier Detection을 통해 5xx나 timeout 등이 반복되는 비정상 Endpoint를 일시적으로 트래픽 대상에서 제외할 수 있음.
Linkerd → latency 기반으로 빠른 Pod 선호
Istio → error/timeout 기반으로 문제 Pod Ejection
결국
CPU 자체를 기준으로 Pod를 피하고 싶다면 Prometheus/cAdvisor + HPA 등의 영역이고,
실제로 느려진 Pod를 피하고 싶다면 Service Mesh를 고려할 수 있음.
'TIL' 카테고리의 다른 글
| Sequelize 트랜잭션 깜빡하고 안 닫으면 생기는 일 (0) | 2026.09.03 |
|---|---|
| Kubernetes Pod별 리소스 모니터링 구성 (0) | 2026.09.03 |
| Vite 외부 공격 요청을 보면서 정리한 보안 체크 5가지 (0) | 2026.08.31 |
| k3s 노드 DiskPressure 원인 추적 및 조치 (0) | 2026.08.27 |
| Docker 디스크 부족 시 확인 방법 (0) | 2026.08.26 |