피드로 돌아가기
Dev.toInfrastructure
원문 읽기
200ms 내 Kernel 레벨 라우팅으로 구현한 K8s Service 메커니즘
How a Kubernetes Service Actually Works (and All 5 Types You Need)
AI 요약
Context
Pod의 Ephemeral 특성으로 인한 IP 변경 및 유동적 스케줄링 발생. 개별 Pod IP에 의존한 통신 시 Service Discovery 구현 비용 증가 및 시스템 불안정성 초래.
Technical Solution
- API Server를 통한 ClusterIP 할당 및 IPAddress/ServiceCIDR 객체 기반의 중앙 집중형 IP 관리
- EndpointSlice Controller를 통한 Ready 상태 Pod IP의 정밀한 추적 및 100개 단위 슬라이싱 최적화
- kube-proxy의 DaemonSet 배포를 통한 노드별 iptables-restore 기반의 원자적 룰 업데이트
- KUBE-SERVICES 체인을 통한 ClusterIP-Pod IP 간의 DNAT 처리 및 Netfilter 기반의 커널 레벨 패킷 포워딩
- StatefulSet 대응을 위한 Headless Service 제공으로 DNS를 통한 개별 Pod IP 직접 노출 구조 설계
- ExternalName을 활용한 외부 관리형 서비스의 CNAME Alias 처리로 추상화 계층 유지
실천 포인트
1. 외부 노출 필요 시 LoadBalancer 남용을 지양하고 ClusterIP와 Ingress 조합 검토
2. StatefulSet 운영 시 DNS 기반 직접 통신을 위해 Headless Service 설정 확인
3. 서비스 규모 확장 시 EndpointSlices의 100개 엔드포인트 제한 및 슬라이싱 동작 파악
4. kube-proxy의 iptables 모드 기반 트래픽 분산 로직(Random 모드 등) 확인