IL-0005 OpenAI · 2024-12-11kubernetes
OpenAI 는 전 세계에서 수백 개의 쿠버네티스 클러스터를 운영한다. 신뢰성을 높이는 작업의 하나로 클러스터 관측 도구를 개선하고 있었고, 2024년 12월 11일 쿠버네티스 컨트롤 플레인 지표를 자세히 모으는 새 텔레메트리 서비스를 배포했다. 텔레메트리 서비스는 모든 노드에 깔린다. 새 설정 때문에 노드마다 쿠버네티스 API 요청을 보냈는데, 이 요청은 클러스터가 클수록 비용이 커진다. 노드 수천 대가 동시에 이 요청을 보내자 API 서버가 무너졌고, 대형 클러스터 대부분의 컨트롤 플레인이 멈췄다.
데이터 플레인은 컨트롤 플레인과 대체로 따로 돌도록 설계되어 있다. 하지만 DNS 해석에는 쿠버네티스 API 서버가 필요하고, 서비스들은 DNS 로 서로를 찾는다. 서비스들은 노드의 DNS 캐시에 남은 오래된 레코드로 한동안 버텼지만, 20분에 걸쳐 레코드가 만료되자 실패했다. 이 지연 때문에 문제의 전체 범위를 알기 전에 배포가 계속 진행됐다.
변경은 12월 10일 스테이징 클러스터에서 시험했고 문제가 보이지 않았다. 문제는 일정 크기를 넘는 클러스터에서만 나타났다. 배포 전에는 모든 클러스터에서 CPU 와 메모리 사용량을 점검해 새 서비스가 돌던 서비스를 방해하지 않는지 확인했지만, API 서버 부하는 따져 보지 않았다. 배포 과정에서 서비스 상태는 감시했지만, 클러스터 상태를 감시하는 절차는 부족했다.
탐지 도구는 고객 영향 몇 분 전에 문제를 잡았다. 하지만 고치려면 문제 서비스를 지워야 했고, 그러려면 과부하 상태의 컨트롤 플레인에 접근해야 했다. 팀은 클러스터 규모를 줄이고, 쿠버네티스 관리 API 로 가는 네트워크를 막고, API 서버를 늘리는 일을 동시에 해서 문제 서비스를 지울 수 있을 만큼 제어권을 되찾았다. 일부 클러스터에서는 많은 서비스가 동시에 자원을 내려받다가 자원 한도가 차서 손으로 추가 조치를 해야 했다. ChatGPT 는 오후 5시 45분에 상당 부분, 7시 1분에 완전히 회복했다. API 는 5시 36분에 상당 부분, 7시 38분에 모든 모델에서 완전히 회복했다. Sora 는 7시 1분에 완전히 회복했다.
2024년 12월 11일 오후 3시 13분 PST 에 알림이 울려 엔지니어들에게 전달됐다. 3시 16분부터 ChatGPT, API, Sora 를 포함한 OpenAI 의 모든 서비스가 크게 느려지거나 완전히 멈췄다.
상태 페이지에는 API 호출이 오류를 내고 platform.openai.com 과 ChatGPT 에 로그인하기 어렵다는 보고가 올라왔다. 영향받은 구성 요소는 Chat Completions, Fine-tuning, Embeddings, Images, Batch, Audio, Moderations, Realtime, Files, Conversations, Login, Search, File uploads, Voice mode 였다.
대형 클러스터 대부분에서 쿠버네티스 API 서버가 과부하로 무너져 컨트롤 플레인이 멈췄다. 서비스들은 노드마다 있는 DNS 캐시에 남은 오래된 레코드로 한동안 버텼다. 캐시된 레코드가 다음 20분에 걸쳐 만료되면서 실시간 DNS 해석에 의존하는 서비스들이 실패하기 시작했다. 캐시가 비자 DNS 서버 부하가 몇 배로 늘었고 컨트롤 플레인 부하도 더 커졌다. 고객 영향은 3시 40분에 가장 컸다.
엔지니어들은 3시 16분에 원인을 찾았다. 문제 서비스를 지우려면 쿠버네티스 컨트롤 플레인에 접근해야 했지만, API 서버 과부하 때문에 접근할 수 없었다.
원인 설정 변경
변경이 모든 클러스터에 적용되던 오후 3시 13분 PST 에 알림이 울려 엔지니어들에게 전달됐다. 탐지 도구는 고객이 영향을 받기 몇 분 전에 문제를 잡았고, 엔지니어들은 3시 16분에 원인을 찾았다. 다만 노드의 DNS 캐시가 실제 실패를 늦춰, 문제의 전체 범위가 보이기 전에 배포가 계속 진행됐다.
이 장애는 여러 시스템과 절차가 동시에 실패하며 예상하지 못한 방식으로 얽혀 생겼다. 테스트는 이 변경이 쿠버네티스 컨트롤 플레인에 주는 영향을 잡지 못했다. DNS 캐시 때문에 변경과 서비스 실패 사이에 시간 차가 생겼다. 컨트롤 플레인에 접근할 수 없게 되면서 복구가 매우 느렸다.
데이터 플레인이 컨트롤 플레인과 따로 돌도록 설계되어 있어도, DNS 기반 서비스 디스커버리가 컨트롤 플레인에 기대면 컨트롤 플레인 장애가 서비스 장애로 번진다. 배포 전 점검은 클러스터의 CPU 와 메모리 사용량만 봤고 API 서버 부하는 보지 않았다.
IL-0179 DEBUG 로그가 쏟아지자 동기 로깅을 하던 요청 스레드들이 가득 찬 stdout 파이프에서 멈춘 채 DB 커넥션을 쥐고 있어, HikariCP 커넥션 풀이 고갈되고 요청이 30초 주기로 한꺼번에 실패했다.MUSINSA · 2026같은 원인 · 공통 텔레메트리 에이전트
IL-0118 쿠버네티스 네임스페이스 라벨을 전역으로 바꾸자 네트워크 계층이 메타데이터를 다시 계산하면서 가장 큰 GPU 클러스터들 가운데 세 곳의 컨트롤 플레인이 과부하에 빠졌고, ChatGPT 와 API 가 타임아웃과 503 오류를 냈다.OpenAI · 2024같은 원인 · 공통 쿠버네티스 API 서버
IL-0152 정비 작업 중 FRA1 내부 인프라 클러스터에 잘못된 설정이 들어가 그 위에서 돌던 DOKS 클러스터 200개의 컨트롤 플레인이 자동으로 삭제됐다.DigitalOcean · 2024같은 원인 · 공통 쿠버네티스 API 서버
IL-0068 익명 요청을 허용한 쿠버네티스 API 서버로 공격자가 들어와 RBAC 로 백도어를 만들고, DaemonSet 으로 Monero 채굴기를 모든 노드에 띄웠다.Aqua Security · 2023같은 원인 · 공통 쿠버네티스 API 서버
IL-0109 로그 수집을 고치려던 EKS 노드 롤오버가 꼬이면서 Auto Scaling 그룹이 정상 워커 노드를 모두 종료해 클러스터에 노드가 하나도 남지 않았다.DFDS · 2023 · sev1같은 원인 · 공통 텔레메트리 에이전트
https://incidentlib-mcp.benchlet.com/mcpAPI 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.
같은 원인 · 공통 쿠버네티스 API 서버
같은 원인 · 공통 쿠버네티스 API 서버