Incident Library
  • 원인
  • 구성 요소
  • 증상
  • 기여 요인
  • 사례

사례13건

13건 중 3~7번째

  1. 증상

    2026-03-14 부터 고객의 관리형 쿠버네티스 컨트롤 플레인 일부가 주기적으로 응답하지 않았다. 영향받은 클러스터에는 그때마다 몇 분씩 닿을 수 없었고, 배포, 스케일링, 헬스체크처럼 쿠버네티스 API 에 기대는 작업이 제대로 동작하지 않았다. 상태 페이지에는 2026-03-16 08:24 UTC 에 일부 고객이 컨트롤 플레인 연결 문제와 쿠버네티스 기능 저하를 겪을 수 있다고 처음 올라왔다.

    원인
    구성 요소
    기여 요인
    조치
    • 영향받은 데이터베이스 인스턴스를 조각 모음해 인스턴스마다 약 3–4 GiB 를 되찾고 정상 운영 여유를 되돌렸다.
    • 영향받은 인스턴스에서 데이터베이스 컴팩션 주기를 줄였다.
    • 03-16 11:37 UTC 에 쿠버네티스 팀이 영향받은 AI Model Hub 데이터베이스 서비스에 수정을 배포했다.
    • 03-16 19:58 UTC 에 영향받은 모든 클러스터에 마지막 변경을 적용했다.
    후속 조치
    • 데이터베이스 인스턴스별 컨트롤 플레인 상태가 잘 보이도록 모니터링 대시보드를 넓힌다.
    • 데이터가 가장 많은 클러스터를 전용 데이터베이스 백엔드로 옮겨 그 워크로드가 같은 데이터베이스 인스턴스의 다른 클러스터에 주는 영향을 없앤다.
    • 이런 장애가 나면 곧바로 호출 알림이 가서 사람이 제때 개입하도록 알림을 개선한다.
    • 바꾼 컴팩션 주기를 모든 공유 컨트롤 플레인 데이터베이스 인스턴스에 적용한다.
    • 조각화가 쌓이지 않도록 모든 인스턴스에 정해진 일정으로 도는 자동 조각 모음 작업을 둔다.
    • 한곳에 몰리는 위험을 줄이도록 데이터베이스 인스턴스 사이의 클러스터 배치를 다시 맞춘다.
    • 4주 안에 데이터를 지나치게 많이 만드는 클러스터의 고객에게 직접 연락해, 큰 보안 스캔 보고서를 컨트롤 플레인 데이터베이스가 아닌 외부 스토리지 백엔드에 두는 것 같은 워크로드 최적화를 논의한다.
    • 1~3개월 안에 공유 컨트롤 플레인 데이터베이스에 테넌트별 자원 쿼터와 키 개수 한도를 두어, 클러스터 하나가 다른 클러스터에 영향을 주지 못하게 한다.
    • 2026년 2분기부터 공유 컨트롤 플레인을 다시 설계해 전용 데이터베이스 인스턴스를 두고 수직 확장을 개선해 고객 워크로드 사이의 격리를 강화한다.
    • 데이터가 꾸준히 많은 고객을 위해 데이터베이스를 완전히 샤딩하는 방안을 검토한다.
    • 다음 장애의 대응 시간을 줄이도록 데이터베이스 자원 고갈과 복구를 다루는 운영 훈련을 정기적으로 한다.
  2. 증상

    2026-03-04 에 IONOS Container Registry 고객이 컨테이너 이미지를 푸시하거나 풀할 때 504 Gateway Timeout 오류를 받았다. 레지스트리에 기대는 배포가 막혔다. 상태 페이지에는 09:23 UTC 에 레지스트리의 오류 수가 늘었고 고객이 이미지를 풀하지 못할 수 있다고 처음 올라왔다.

    촉발

    마이그레이션 중 일시적인 용량 제약 때문에 중요한 컨트롤 플레인 구성 요소 둘이 같은 프록시 인스턴스에 놓였다. 직접적인 계기는 그 프록시가 동시 연결 한도에 닿아 새 연결을 받지 않은 것이었다.

    원인
    구성 요소
    기여 요인
    조치
    • 12:22 UTC 에 쿠버네티스 팀이 쿠버네티스 컨트롤 플레인 구성 요소 하나의 버전을 롤백하는 완화책을 배포했다.
    • 프록시 용량을 더 마련했다.
    • 영향받은 컨트롤 플레인 구성 요소를 서로 다른 프록시 인스턴스로 옮겨 부하를 고르게 되돌렸고, 504 오류가 끝났다.
    후속 조치
    • 노드마다 전용 로컬 프록시를 쓰도록 레지스트리와 쿠버네티스 API 사이의 연결을 다시 설계해 공유 프록시 병목을 없앤다. 운영 적용은 2026년 2분기로 잡았다.
    • 프록시 연결 사용률이 한도에 다가가기 전에 경고가 울리도록 알림 기준을 조정한다. 2026년 2분기에 끝낼 예정이다.
    • 인프라 클러스터를 더 배포하고 기존 레지스트리를 다시 나눠, 어느 클러스터도 안전한 운영 용량을 넘지 않게 한다. 사용량이 늘면 자동화가 부하를 계속 고르게 맞춘다.
  3. 증상

    2025-10-28 01:47 GMT 에 Feature Flags 서비스의 SDK 트래픽을 흉내 내는 자동 합성 검사가 실패하기 시작했다. http://config.ff.harness.io/client/auth 로 가는 일부 요청이 502 를 받았다.

    촉발

    일상 배포 중 쿠버네티스가 파드 일부를 이미지가 로컬에 캐시되지 않은 새 노드로 다시 스케줄했다. 그 이미지는 Google Artifact Registry 에서 이미 지워져 있었다.

    원인
    구성 요소
    기여 요인
    감지

    Feature Flags 서비스의 SDK 트래픽을 흉내 내는 자동 합성 검사가 01:47 GMT 에 실패하기 시작하면서 Harness 가 장애를 알아챘다.

    조치
    • 지워진 이미지를 Google Artifact Registry 에 되살렸다.
    • 영향받은 파드를 다시 배포해 정상 동작을 되찾았다.
    후속 조치
    • 의도하지 않은 삭제를 막도록 Google Artifact Registry 의 이미지 보존 정책을 검토하고 강화한다.
    • 운영 이미지가 정해진 최소 기간 동안 모두 남아 있는지 자동으로 검증한다.
    • 이미지 풀 오류를 감시하고 알림을 보낸다.
  4. 증상

    2025년 2월 5일 21:38 UTC 무렵부터 여러 리전에서 LKE, LKE-E, 그 밖에 Docker Hub 이미지 풀에 기대는 서비스들이 이미지를 받지 못했다.

    촉발

    Docker Hub 가 남용 방지 조치로 Linode 의 IPv6 주소 대역에서 오는 이미지 풀에 레이트 리밋을 걸었다.

    원인
    구성 요소
    기여 요인
    감지

    레이트 리밋은 21:38 UTC 무렵 시작됐고, 22:48 UTC 에 상태 페이지가 Docker Hub IPv6 문제를 조사 중이라고 처음 알렸다. 2월 6일 01:06 UTC 에는 Docker Hub 로 가는 IPv6 이미지 풀 요청에 레이트 리밋이 걸린 것을 원인으로 확인했다고 올렸다.

    조치
    • DNS 리졸버가 'AAAA' 레코드 대신 'A' 레코드로 응답하게 바꿔 Docker Hub 이미지 풀이 IPv4 로 나가게 했다.
    후속 조치
    • Docker Hub 의 남용 방지 조치에 서비스가 영향받지 않도록 장기 해법을 찾는다.
    교훈

    공용 레지스트리 하나에 기대는 이미지 풀은 그 레지스트리의 레이트 리밋 정책 하나로 한꺼번에 막힐 수 있다. 이번에는 Docker Hub 가 IPv6 주소를 앞 64비트로 판정하는 방식 때문에 Linode IPv6 대역의 이미지 풀이 막혔고, DNS 로 IPv4 를 쓰게 해 피해 갔다.

  5. 증상

    2023-09-18 13:42, 팀은 High-priority-alert 채널에서 RootVolUtilisation-Critical 알림을 봤다. 14:03 에는 한 사용자가 이미지 풀이 no space left on device 오류로 실패한다고 알렸다.

    촉발

    EKS 모듈을 버전 18 로 올리면서 런치 템플릿이 바뀌었고, 새 노드의 디스크가 100Gb 에서 20Gb 로 줄었다.

    원인
    구성 요소
    기여 요인
    감지

    13:42 에 High-priority-alert 채널로 RootVolUtilisation-Critical 알림이 왔다. 14:03 에 사용자가 이미지 풀 실패를 보고했고, 장애 선언은 15:12 였다.

    조치
    • 예전 기본 노드 그룹을 uncordon 하고, 새 노드를 drain 해 워크로드를 예전 노드 그룹으로 되돌렸다.
    • 루트 볼륨을 20Gb 로 줄인 런치 템플릿 변경을 찾아, manager 클러스터와 live 클러스터에 수정을 적용했다.
    • 예전 노드 그룹을 drain 해 워크로드를 수정한 노드로 옮겼다.
    후속 조치
    • EKS 모듈을 올릴 때 런치 템플릿 변경을 비교하는 절차를 런북에 넣는다.
    • live 클러스터처럼 크기가 다양한 이미지를 받아 보는 테스트 환경을 만든다.
    • RootVolUtilisation 알림 런북에 디스크 크기 설정을 확인하는 단계를 넣는다.
    • 노드 수에 따라 CoreDNS 를 자동으로 늘리고 줄인다.
    • IP 접두사 부족을 IPv6 로 풀 수 있는지 조사한다.
    • terraform plan 에서 런치 템플릿이 바뀌면 알아챌 수 있게 드리프트 테스트를 추가한다.
    • CNI 와 ipamd 로그를 볼 수 있게 로깅을 갖추고, IP 접두사 부족 오류가 나면 알림을 보낸다.
    교훈

    이 글은 교훈 대신 후속 조치를 적었다. 조치를 보면 팀에는 빈틈이 두 가지 있었다. 하나는 모듈 업그레이드가 바꾼 런치 템플릿을 배포 전에 비교하지도, 드리프트 테스트로 잡지도 않은 것이다. 다른 하나는 drain 중 팀이 의심한 IP 접두사 부족을 확인할 CNI 와 ipamd 로그도, 알림도 없었던 것이다.

내 클러스터에도 있는지 확인하기

이 13건에서 가장 많이 나오는 구성 요소: 컨테이너 레지스트리와 자격 증명, 노드 풀. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별8

배포 결함2건

  1. IL-0237 us-southcarolina 리전에서 Lucidworks AI 의 호스팅 LLM 이 약 1시간 반 동안 500 과 429 오류를 내며 멈췄다
  2. IL-0234 내부 배포 자동화가 개발용 애플리케이션을 고객의 Managed Kubernetes 클러스터들에 잘못 설치해 컨트롤 플레인 연결과 쿠버네티스 기능에 문제가 났다

용량 한계4건

  1. IL-0464 IONOS 관리형 쿠버네티스의 고객 컨트롤 플레인 일부가 사흘 동안 몇 분씩 되풀이해 끊겼다
  2. IL-0465 IONOS Container Registry 에서 이미지 푸시와 풀이 504 Gateway Timeout 으로 실패했다
  3. IL-0037 imagePullPolicy가 Always인 DaemonSet이 크래시 루프를 돌며 이미지를 계속 받아, NAT 세 대를 같이 쓰던 리전 전체가 이미지 레지스트리에서 429로 막혔다
  4. IL-0040 비운영 쿠버네티스 클러스터에 Helm 차트를 한꺼번에 설치하자 작은 gp2 루트 볼륨의 IOPS 가 바닥나, 워커 노드 세 대에서 kubelet 이나 Docker 가 내려가 세 대 모두 NotReady 가 됐다

데이터 손상1건

조직
  1. IL-0474 Harness Feature Flags 인증 엔드포인트 http://config.ff.harness.io/client/auth 가 일부 요청에 502 를 냈다

의존성 장애1건

기여 요인
조직
  1. IL-0159 Docker Hub 의 남용 방지 장치가 Linode 의 IPv6 주소 대역에 레이트 리밋을 걸어 LKE 와 LKE-E 의 이미지 풀이 429 Too Many Requests 로 실패했다.
    Linode2025

설정 변경1건

  1. IL-0019 EKS 모듈 18 업그레이드로 새 노드의 디스크가 20Gb 로 줄어 이미지 풀이 no space left on device 로 실패했다

운영 실수1건

  1. IL-0018 DockerHub 비밀번호를 바꾼 뒤 Concourse 와 EKS 클러스터 노드가 Docker Hub 에서 이미지를 받지 못했다

업그레이드로 깨진 호환성1건

  1. IL-0144 Ubuntu 18.04 의 systemd 보안 업데이트가 DNS 설정을 날려 AKS 노드의 kubelet 이 레지스트리 이름을 해석하지 못하고 파드가 ImagePullBackoff 에 빠졌다.

DNS·네트워크 장애2건

  1. IL-0517 Gitpod 워크스페이스 클러스터의 CoreDNS 가 상위 DNS 서버에 닿지 못해 워크스페이스가 시작되지 않고 일부 데이터가 사라졌다
    Gitpod2022
  2. IL-0199 운영에 꼭 필요하지 않은 컨테이너가 메모리 한도를 넘어 파드가 사용 불가로 표시됐고, DNS 작업 탓에 레지스트리에 접속하지 못해 파드가 다시 뜨지 못하면서 GitHub.com 이 4시간 넘게 멈췄다.
    GitHub2020