IL-0104 Cisco ThousandEyes · 2025-09-04kubernetesnetworking
Cisco ThousandEyes 의 리드 SRE 가 SREcon26 Americas 에서 발표한 사례다. 2025년 9월 4일 CoreDNS 파드 하나가 OOMKilled 됐다. 이 클러스터는 kube-proxy 가 만드는 KUBE-SERVICES, KUBE-SVC, KUBE-SEP iptables 체인으로 Service 트래픽을 파드에 보내고, 서비스 메시로 Istio 를 사이드카 모드로 쓴다. conntrack 은 이미 본 패킷으로 연결 상태를 기억해, 알려진 연결의 패킷은 iptables 규칙을 다시 평가하지 않고 같은 곳으로 보낸다.
발표는 원인을 셋으로 정리한다. 첫째, Istio 는 DNS 캐시를 매우 공격적으로 갱신하고 모든 DNS 요청에 같은 클라이언트 포트를 다시 쓴다. 이 갱신 간격은 코드에 고정돼 있다. 둘째, kube-proxy 에는 종료된 파드의 오래된 conntrack 항목을 정리하는 장치가 없었다. 이 문제는 쿠버네티스 이슈 #126130 에서 다뤄졌고 v1.32 에서 고쳐졌다. 셋째, conntrack 의 양방향 UDP 스트림 기본 타임아웃은 2분이다.
2025년 9월 4일, CoreDNS 파드 하나가 OOMKilled 됐다.
–
–
–
장애는 Istio, kube-proxy, conntrack 각각의 동작이 겹쳐 생겼다. Istio 는 DNS 캐시를 공격적으로 갱신하며 클라이언트 포트를 다시 썼고, kube-proxy 는 conntrack 항목을 정리하지 않았고, conntrack 의 UDP 기본 타임아웃은 2분이었다. kube-proxy 쪽 문제는 쿠버네티스 v1.32 에서 고쳐졌다. 발표자는 Istio 가 아주 복잡한 일은 단순하게 만들지만 아주 단순한 일은 복잡하게 만든다고 평했다. 발표자는 또 Cilium 을 소개했다. Cilium 은 iptables 체인을 차례로 훑는 대신 맵으로 Service 를 찾고, eBPF 데이터 경로로 kube-proxy 를 완전히 대체할 수 있다.
–