IL-0464 IONOS Cloud · 2026-03-14kubernetes
IONOS 관리형 쿠버네티스의 고객 컨트롤 플레인 일부가 사흘 동안 몇 분씩 되풀이해 끊겼다
2026-03-14 부터 03-16 까지 IONOS Cloud 의 관리형 쿠버네티스에서 고객 컨트롤 플레인 일부가 주기적으로 몇 분씩 닿을 수 없었다. 근본 원인은 세 가지가 겹친 것이었다. 첫째, 몇몇 클러스터가 공유 컨트롤 플레인 데이터베이스에 보안 스캔 보고서와 정책 감사 기록을 주로 쌓았고, 이벤트와 오토스케일링 객체도 많이 쌓았다. 한 데이터베이스 인스턴스에서는 클러스터 셋이 저장된 데이터의 약 64% 를 차지했다. 둘째, 데이터베이스는 컴팩션으로 쓰지 않는 공간을 되찾게 설정돼 있었지만, 그 주기가 쓰기 속도를 따라가지 못해 과거 리비전이 쌓였다. 셋째, 데이터베이스가 커지면서 조각화로 실제 할당 크기가 쓰는 데이터보다 약 40% 커졌고, 하드 스토리지 한도에 다가갔다. 한도에 닿았다면 데이터베이스가 읽기 전용이 되어 그 인스턴스의 모든 클러스터에서 컨트롤 플레인이 완전히 멈췄을 것이다. 이 셋이 겹쳐 데이터베이스 유지 보수 주기마다 멈춤이 생겼고, 그때마다 쿠버네티스 API 서버가 흔들려 컨트롤 플레인을 쓸 수 없었다.
03-16 10:04 UTC 에 원인을 etcd 데이터베이스의 자원 제약으로 찾았다. 11:05 UTC 에 DBaaS 와 AI Model Hub 를, 11:57 UTC 에 Container Registry 를 영향 범위에 더했다. 11:37 UTC 에 AI Model Hub 데이터베이스 서비스에 수정을 배포했고, AI Model Hub 는 12:22 UTC, Container Registry 는 12:57 UTC, DBaaS 는 13:56 UTC 에 복구로 표시했다. 영향받은 데이터베이스 인스턴스를 조각 모음해 인스턴스마다 약 3–4 GiB 를 되찾고 컴팩션 주기를 줄였으며, 19:58 UTC 에 영향받은 모든 클러스터에 마지막 변경을 적용했다. 컨트롤 플레인이 안정된 상태를 유지하자 03-17 17:04 UTC 에 해결로 닫았다.
- 심각도
- –
- 영향 범위
- A subset of customer Managed Kubernetes control planes periodically unreachable; DBaaS (PostgresDB on Kubernetes), the AI Model Hub and the Container Registry were also affected
- 영향 사용자
- –
- 지역
- DE/FRA (Managed Kubernetes)
- 감지까지
- –
- 복구까지
- –
증상
2026-03-14 부터 고객의 관리형 쿠버네티스 컨트롤 플레인 일부가 주기적으로 응답하지 않았다. 영향받은 클러스터에는 그때마다 몇 분씩 닿을 수 없었고, 배포, 스케일링, 헬스체크처럼 쿠버네티스 API 에 기대는 작업이 제대로 동작하지 않았다. 상태 페이지에는 2026-03-16 08:24 UTC 에 일부 고객이 컨트롤 플레인 연결 문제와 쿠버네티스 기능 저하를 겪을 수 있다고 처음 올라왔다.
끊김은 컨트롤 플레인 데이터베이스의 유지 보수 주기에 맞춰 되풀이됐다. 데이터베이스가 유지 보수 중에 멈출 때마다 쿠버네티스 API 서버가 잠시 흔들렸다.
장애는 다른 서비스로 번졌다. 11:05 UTC 에 PostgresDB on Kubernetes 에서 오류가 늘어 DBaaS 와 AI Model Hub 가 영향 범위에 들어갔고, 11:57 UTC 에는 Container Registry 가 더해져 고객이 레지스트리에서 이미지를 풀하고 푸시하는 데 문제를 겪을 수 있었다. 영향은 DE/FRA 의 Managed Kubernetes 에 미쳤다.
원인
원인 용량 한계
- 촉발
- –
감지
–
조치
- 영향받은 데이터베이스 인스턴스를 조각 모음해 인스턴스마다 약 3–4 GiB 를 되찾고 정상 운영 여유를 되돌렸다.
- 영향받은 인스턴스에서 데이터베이스 컴팩션 주기를 줄였다.
- 03-16 11:37 UTC 에 쿠버네티스 팀이 영향받은 AI Model Hub 데이터베이스 서비스에 수정을 배포했다.
- 03-16 19:58 UTC 에 영향받은 모든 클러스터에 마지막 변경을 적용했다.
후속 조치
- 데이터베이스 인스턴스별 컨트롤 플레인 상태가 잘 보이도록 모니터링 대시보드를 넓힌다.
- 데이터가 가장 많은 클러스터를 전용 데이터베이스 백엔드로 옮겨 그 워크로드가 같은 데이터베이스 인스턴스의 다른 클러스터에 주는 영향을 없앤다.
- 이런 장애가 나면 곧바로 호출 알림이 가서 사람이 제때 개입하도록 알림을 개선한다.
- 바꾼 컴팩션 주기를 모든 공유 컨트롤 플레인 데이터베이스 인스턴스에 적용한다.
- 조각화가 쌓이지 않도록 모든 인스턴스에 정해진 일정으로 도는 자동 조각 모음 작업을 둔다.
- 한곳에 몰리는 위험을 줄이도록 데이터베이스 인스턴스 사이의 클러스터 배치를 다시 맞춘다.
- 4주 안에 데이터를 지나치게 많이 만드는 클러스터의 고객에게 직접 연락해, 큰 보안 스캔 보고서를 컨트롤 플레인 데이터베이스가 아닌 외부 스토리지 백엔드에 두는 것 같은 워크로드 최적화를 논의한다.
- 1~3개월 안에 공유 컨트롤 플레인 데이터베이스에 테넌트별 자원 쿼터와 키 개수 한도를 두어, 클러스터 하나가 다른 클러스터에 영향을 주지 못하게 한다.
- 2026년 2분기부터 공유 컨트롤 플레인을 다시 설계해 전용 데이터베이스 인스턴스를 두고 수직 확장을 개선해 고객 워크로드 사이의 격리를 강화한다.
- 데이터가 꾸준히 많은 고객을 위해 데이터베이스를 완전히 샤딩하는 방안을 검토한다.
- 다음 장애의 대응 시간을 줄이도록 데이터베이스 자원 고갈과 복구를 다루는 운영 훈련을 정기적으로 한다.
교훈
–
출처
- https://status.ionos.cloud/incidents/h9x5s66m4r28 · official-status · 보관본
관련 사례
IL-0204Render 프랑크푸르트 클러스터에서 etcd 메모리 급증으로 컨트롤 플레인이 과부하에 걸렸고, 컨트롤 플레인 노드를 재부팅하자 그 위의 CoreDNS 가 다시 뜨지 못해 DNS 가 멈췄다.Render · 2024같은 원인 · 공통 쿠버네티스 API 서버, etcd
IL-0194kube-apiserver 재시작 뒤 Vector DaemonSet 의 파드 list 요청이 한꺼번에 몰려 etcd 메모리가 세 배 가까이 늘고 마스터 노드가 연쇄적으로 재시작했다.Palark · 2023같은 원인 · 공통 쿠버네티스 API 서버, etcd
IL-0076dex의 AuthRequest 리소스가 끝없이 쌓였고, 이를 치우려고 네임스페이스를 지우자 목록 조회 타임아웃과 재시도가 반복되며 쿠버네티스 마스터가 내려갔다Fullstaq · 2019같은 원인 · 공통 쿠버네티스 API 서버, etcd
IL-0075클러스터가 EC2 인스턴스 약 290대로 커지자 노드마다 도는 Datadog 에이전트가 쿠버네티스 API 를 폴링하면서 API 서버가 CPU 와 메모리를 다 써 쿠버네티스 컨트롤 플레인을 쓸 수 없게 됐다.Civis Analytics · 2019같은 원인 · 공통 쿠버네티스 API 서버, etcd
같은 원인 · 공통 관리형 쿠버네티스 컨트롤 플레인과 제공자 API
IL-0168새 쿠버네티스 릴리스 뒤 많은 Kapsule 클러스터가 동시에 자동 업그레이드되면서 Kubernetes API 가 과부하로 OOM 이 났고, 새 노드 인증 방식의 재시도가 혼잡을 키워 노드가 Not Ready 가 됐다.Scaleway · 2024같은 원인 · 공통 쿠버네티스 API 서버
IL-0195200개가 넘는 노드의 고객 클러스터에서 Cilium 파드가 LIST 요청을 한꺼번에 쏟아내 kube-apiserver 가 메모리를 다 쓰고 죽기를 되풀이했다.Palark · 2023같은 원인 · 공통 쿠버네티스 API 서버
같은 원인 · 공통 쿠버네티스 API 서버
IL-0002빌더 파드가 노드 한 대에 몰리자 kubelet 이 기본 API QPS 한도에 막혀 파드 상태를 늦게 갱신했고, CI 빌드가 AWS IAM 자격 증명을 받지 못해 실패했다Zalando · 2019같은 원인 · 공통 쿠버네티스 API 서버
같은 원인 · 공통 쿠버네티스 API 서버
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0464
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0464/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.