IL-0013 loveholidays · 2020-02-15 (게시일)kubernetesgcpnetworking
conntrack 은 리눅스 커널이 네트워크 연결을 추적하는 기능이다. NAT 와 iptables 가 이 정보를 쓰고, 쿠버네티스 노드는 수많은 파드와 서비스 사이의 연결을 여기에 기록한다. 테이블 크기인 conntrack_max 는 노드 RAM 에 비례한다. loveholidays 가 GKE 노드에서 관찰해 보니 conntrack_max 는 메모리 1MB 당 대략 5였다.
loveholidays 의 집계 서비스는 각각 인스턴스가 100개 넘는 두 서비스 사이에서 프록시 역할을 한다. 평소 초당 10,000건 넘는 요청을 처리하고, 기본 부하의 네 배까지 치솟기도 한다. 노드 RAM 을 절반으로 줄이고 추적할 연결을 두 배로 늘리자 일부 노드의 conntrack 테이블이 바닥났고, 연결 문제와 연결 리셋 오류가 생겼다.
팀은 RAM 이 더 큰 노드에 애플리케이션을 배치하고 노드당 집계 서비스 파드 수를 제한해 당장의 문제를 풀었다. 쿠버네티스 1.15 이상에는 관련 수정이 들어 있을 것으로 보인다. init 컨테이너나 데몬셋에서 sysctl 로 conntrack_max 를 올리는 방법도 있다. 다만 이렇게 하면 애플리케이션이 인프라를 건드리게 되고, 여러 애플리케이션이 같은 값을 서로 덮어쓸 수 있으며, 노드 메모리 사용량과 지연도 늘 수 있다.
서비스 구조를 바꾸고 노드 풀 크기를 조정하고 하위 서비스를 샤딩한 직후, 집계 서비스에 여러 연결 문제가 생기고 오류율이 올라갔다.
애플리케이션에는 Caused by: org.apache.http.NoHttpResponseException: xxxxx failed to respond 오류가 찍혔다. HAProxy 가 보고하는 연결 리셋 오류는 계속 늘었다.
팀은 네트워크 지표를 살피다가 Prometheus 지표 node_nf_conntrack_entries 와 node_nf_conntrack_entries_limit 을 겹쳐 보았고, 일부 노드의 conntrack 테이블 공간이 바닥나고 있다는 것을 알았다. 사용률은 다음 쿼리로 봤다. (node_nf_conntrack_entries / on (pod) node_nf_conntrack_entries_limit / on (pod) group_right kube_pod_info) * 100
팀은 먼저 서비스의 연결 문제와 오류율 상승을 알아챘다. HAProxy 가 보고하는 연결 리셋 오류가 계속 늘었고, 팀은 node_nf_conntrack_entries 를 node_nf_conntrack_entries_limit 과 겹쳐 보고 일부 노드의 conntrack 테이블이 바닥난 것을 확인했다.
쿠버네티스 노드의 conntrack_max 는 노드 RAM 에 비례해 정해진다. 부하가 큰 애플리케이션은 특히 작은 노드에서 conntrack_max 를 쉽게 넘겨 연결 리셋과 타임아웃을 일으킨다. 노드를 작게 바꾸면 추적할 수 있는 연결 수도 함께 줄어든다. conntrack 사용률은 지표로 보고 경보를 걸어 둬야 한다.
IL-0102 배포와 워커 오토스케일링 폭주가 겹치자 크기를 고정해 둔 CoreDNS 가 메모리 한도를 넘겨 재시작된 뒤 회복하지 못했고, Buildkite 사이트 전체가 약 30분 멈췄다.Buildkite · 2026같은 원인 · 공통 노드 풀
IL-0155 NYC1 의 일부 DOKS 클러스터에서 공유 CPU 노드 위의 CoreDNS 때문에 DNS 가 간헐적으로 실패하고 NodeNotReady 가 났다DigitalOcean · 2026같은 원인 · 공통 노드 풀
같은 원인 · 공통 노드 풀
IL-0082 EKS 노드 교체 중 CoreDNS 파드 하나가 종료되자 남은 CoreDNS 파드가 늘어난 부하를 버티지 못해 DNS 조회가 느려지고 타임아웃이 났다.RebelMouse · 2025같은 원인 · 공통 노드 풀
같은 원인 · 공통 노드 풀
https://incidentlib-mcp.benchlet.com/mcpAPI 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.
같은 원인 · 공통 conntrack 테이블
같은 원인 · 공통 노드 풀
IL-0016 네임스페이스와 규칙이 늘어 live 클러스터의 Prometheus 가 메모리 부족으로 OOMKilled 되며 플랫폼 모니터링이 끊겼다UK Ministry of Justice · 2023같은 원인 · 공통 노드 풀
IL-0070 dask-gateway로 워커를 대량으로 띄우자 노드가 1분 만에 100대 늘었고, Prometheus가 메모리를 거의 다 쓰던 코어 노드에서 hub 파드를 비롯한 중요한 파드들이 축출되거나 재시작됐다2i2c · 2023같은 원인 · 공통 노드 풀
IL-0094 JupyterHub 클러스터에서 학생 파드가 노드의 CPU 와 메모리를 다 써서 자원 보장이 부족했던 코어 파드가 자원을 얻지 못했고, 허브 전체가 멈췄다.2i2c · 2020같은 원인 · 공통 노드 풀
같은 원인 · 공통 노드 풀
IL-0033 kube-dns 파드 사이의 트래픽 불균형과 DNS 초당 패킷 한도 때문에 외부 DNS 조회가 많은 여러 서비스의 지연 시간이 20초까지 늘었다Airbnb · 2019같은 원인 · 공통 kube-proxy