IL-0548 Buildkite · 2026-05-20kubernetesawsobservability
EKS 의 Prometheus 가 거듭 죽으며 Buildkite 의 알림 전달과 빌드 디스패치가 지연됐다
Buildkite 는 운영 워크로드의 컴퓨팅 기반을 AWS Fargate 에서 AWS EKS 로 옮기고 있었다. 서비스는 안정성을 확인하며 작은 묶음으로 옮겼다.
15:42 부터 17:33 사이에 EKS 의 Prometheus 서버가 쓰려는 메모리가 실행 중인 호스트의 메모리보다 많아졌다. 오토스케일링으로 Prometheus 가 추적하는 파드 수가 늘었고, 그만큼 Prometheus 서버의 메모리 요구량이 커졌다. 호스트가 Prometheus 서버 프로세스를 죽였고 쿠버네티스 컨트롤 플레인이 곧 다시 띄웠다. 그사이 애플리케이션 오토스케일링에 쓰는 지표가 없어 영향을 받은 서비스들이 확장되지 않았고, 그 결과 지연이 생겼다. Prometheus 는 재시작 직후 다시 호스트 메모리를 넘었고 같은 순환이 되풀이됐다.
당번 팀은 미리 마련한 문서를 따라 영향을 받은 서비스의 부하를 Fargate 로 되돌렸다. 대부분의 고객은 16:49 부터 완전히 회복됐다. 지연 동안 백로그가 크게 쌓인 일부 고객은 손으로 더 확장해야 했고, 17:33 에 모든 고객이 완전히 회복됐다. Buildkite 는 그 뒤 이 서비스들을 모두 다시 EKS 로 옮겼고, 이번 장애에서 부딪힌 한계를 훨씬 넘는 규모까지 확장이 잘 되는 것을 확인했다.
- 심각도
- –
- 영향 범위
- Elevated latency in notification delivery (GitHub commit status, email, Slack and webhook notifications), build dispatch and metrics services
- 영향 사용자
- A subset of Buildkite customers
- 지역
- –
- 감지까지
- –
- 복구까지
- 1h 51m
증상
일부 Buildkite 고객에게 알림 전달, 빌드 디스패치, 지표 서비스의 지연이 커졌다. 상태 페이지에는 2026년 5월 20일 16:40 UTC 에 모든 고객의 알림 지연을 조사한다는 글이 올라왔다.
15:42 부터 EKS 의 Prometheus 서버가 쓰려는 메모리가 실행 중인 호스트의 메모리보다 많아졌다. 호스트가 Prometheus 서버 프로세스를 죽였고 쿠버네티스 컨트롤 플레인이 곧 다시 띄웠지만, Prometheus 는 재시작 직후 다시 호스트 메모리를 넘었고 같은 일이 되풀이됐다.
Prometheus 가 내려가 있는 동안 애플리케이션 오토스케일링에 쓰는 지표가 없었다. 그래서 영향을 받은 서비스들이 확장되지 않았고, 그 결과 지연이 생겼다.
상태 페이지는 17:06 UTC 에 알림 지연이 일부 고객에게만 있다고 알렸다. 영향을 받은 알림은 GitHub Commit Status Notifications, Email Notifications, Slack Notifications, Webhook Notifications 였다.
원인
원인 용량 한계
- 촉발
- 오토스케일링으로 Prometheus 가 추적하는 파드 수가 늘었고, 그만큼 Prometheus 서버의 메모리 요구량이 커졌다.
감지
–
조치
- 당번 팀이 미리 마련한 문서를 따라 영향을 받은 서비스의 부하를 Fargate 로 되돌렸고, 대부분의 고객이 16:49 부터 완전히 회복됐다.
- 지연 동안 백로그가 크게 쌓인 일부 고객의 처리 규모를 손으로 더 늘렸고, 17:33 에 모든 고객이 완전히 회복됐다.
후속 조치
- 시스템 노드의 크기를 키웠다.
- Prometheus 서버가 더 많은 제품 부하를 감당하도록 requests 와 limits 를 높였다.
- 새 EKS 리소스 전부를 검토해 빠진 requests 와 limits 를 채웠다. EKS 가 뜻하지 않은 리소스 경합을 막으려면 이 정보가 모두 있어야 한다.
- 다음 장애에서 근본 원인을 빨리 찾도록 EKS 파드와 노드 상태의 관측 수단과 모니터를 더했다.
교훈
–
출처
- https://www.buildkitestatus.com/incidents/3vngjcnbkycl · official-status · 보관본
관련 사례
IL-0016네임스페이스와 규칙이 늘어 live 클러스터의 Prometheus 가 메모리 부족으로 OOMKilled 되며 플랫폼 모니터링이 끊겼다UK Ministry of Justice · 2023같은 원인 · 공통 Prometheus, 컨테이너 메모리 한도, 노드 풀
IL-0102배포와 워커 오토스케일링 폭주가 겹치자 크기를 고정해 둔 CoreDNS 가 메모리 한도를 넘겨 재시작된 뒤 회복하지 못했고, Buildkite 사이트 전체가 약 30분 멈췄다.Buildkite · 2026같은 원인 · 공통 컨테이너 메모리 한도, 노드 풀
같은 원인 · 공통 컨테이너 메모리 한도, 노드 풀
같은 원인 · 공통 컨테이너 메모리 한도, 노드 풀
IL-0044kube-prometheus-stack 업그레이드 뒤 Prometheus 가 WAL 재생 중 메모리를 50Gi 넘게 써서 시작할 때마다 OOMKilled 로 죽었다Saifeddine Rajhi · 2024같은 원인 · 공통 Prometheus, 컨테이너 메모리 한도
IL-0070dask-gateway로 워커를 대량으로 띄우자 노드가 1분 만에 100대 늘었고, Prometheus가 메모리를 거의 다 쓰던 코어 노드에서 hub 파드를 비롯한 중요한 파드들이 축출되거나 재시작됐다2i2c · 2023같은 원인 · 공통 Prometheus, 노드 풀
IL-0094JupyterHub 클러스터에서 학생 파드가 노드의 CPU 와 메모리를 다 써서 자원 보장이 부족했던 코어 파드가 자원을 얻지 못했고, 허브 전체가 멈췄다.2i2c · 2020같은 원인 · 공통 컨테이너 메모리 한도, 노드 풀
같은 원인 · 공통 컨테이너 메모리 한도, 노드 풀
IL-0155NYC1 의 일부 DOKS 클러스터에서 공유 CPU 노드 위의 CoreDNS 때문에 DNS 가 간헐적으로 실패하고 NodeNotReady 가 났다DigitalOcean · 2026같은 원인 · 공통 노드 풀
같은 원인 · 공통 Prometheus
같은 원인 · 공통 노드 풀
IL-0082EKS 노드 교체 중 CoreDNS 파드 하나가 종료되자 남은 CoreDNS 파드가 늘어난 부하를 버티지 못해 DNS 조회가 느려지고 타임아웃이 났다.RebelMouse · 2025같은 원인 · 공통 노드 풀
IL-0046계획된 재시작 뒤 Prometheus 가 WAL 을 다 읽기 전에 startupProbe 에 걸려 재시작을 반복했고 지표가 빠졌다UK Ministry of Justice · 2024같은 원인 · 공통 Prometheus
IL-0110Grafana Agent 파드가 메모리를 많이 쓰던 노드에 Hangfire 파드가 함께 올라가 시스템 OOM 으로 CrashLoopBackOff 를 반복했고, 노드가 응답을 멈추고 NotReady 가 됐다.DFDS · 2024같은 원인 · 공통 컨테이너 메모리 한도
IL-0169FR-PAR 의 Scaleway Kubernetes API 가 메모리 부족으로 쓰러져 노드 인증이 막히고 Kapsule 노드가 NotReady 가 됐다.Scaleway · 2024같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 Prometheus
같은 원인 · 공통 컨테이너 메모리 한도
IL-0206GKE 파드 안의 Consul 에이전트가 메모리 급증으로 거듭 OOM kill 되어 Rails 파드가 데이터베이스 복제본을 찾지 못했고, 모든 쿼리가 primary 로 몰려 GitLab.com 이 느려졌다.GitLab · 2022같은 원인 · 공통 컨테이너 메모리 한도
IL-0176시계열 급증으로 호스트 메모리가 바닥나자 oom_score_adj 999 를 받은 Prometheus 컨테이너가 커널 OOM Killer 에게 먼저 죽어 CrashLoopBackOff 에 빠졌다.LINE · 2020같은 원인 · 공통 Prometheus
같은 원인 · 공통 노드 풀
같은 원인 · 공통 노드 풀
IL-0026메모리 제한이 없는 fluentd-sumologic 파드가 메모리를 다 써서 운영 쿠버네티스 노드 두 대에 이틀 연속 SystemOOM 이 났다Blue Matador · 2019같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0548
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0548/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.