Incident Library
적용된 필터 증상이미지 풀 실패기여 요인한계 미인지모두 풀기검색어 없이 필터만 적용한 목록입니다. 최근 사례부터입니다.
추천 필터 검색하면 검색어에서 찾은 분류 값이 여기에 나옵니다.

그래프

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

사례2건

2건 중 1~2번째

  1. 증상

    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 를 쓰게 해 피해 갔다.

  2. 증상

    사용자들이 작업이 시작되지 않는다고 알려 왔다. 평소에는 모니터링이 먼저 잡아내는 편이었지만 이번에는 사용자 보고가 먼저였다. 처음부터 이미지 풀과 관련된 흔적이 보였다.

    촉발

    애플리케이션 하나가 읽어야 하는 버킷의 권한을 바꾸면서 그 애플리케이션이 시작하지 못하게 됐다. 이 애플리케이션은 약 1,000대 노드에서 도는 DaemonSet이었고 크래시 루프에 빠졌다. imagePullPolicy가 Always여서 재시작할 때마다 노드에 이미 있는 이미지를 다시 받았다.

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

    사용자들이 작업이 시작되지 않는다고 알려 와서 알았다. 모니터링보다 사용자 보고가 먼저였다. 팀은 파드 상태, 이미지 풀 지표, 레지스트리 응답 코드를 차례로 확인해 429 속도 제한을 찾았다.

    조치
    • 영향을 받은 NAT 인스턴스를 교체해 레지스트리로 나가는 출발지 IP를 바꿨다.
    • Cloud SQL 접속에 쓰던 고정 IP 설정과 방화벽 규칙을 다시 맞춰 데이터베이스 연결을 되살렸다.
    후속 조치
    • latest 같은 유동 이미지 태그를 막는 어드미션 웹훅을 만들어 워크로드 리소스와 파드에 걸었다.
    • 웹훅이 클러스터가 만드는 파드까지 거부하자, 파드 객체에서는 빼고 워크로드 객체에만 적용하도록 바꿨다.
    교훈

    imagePullPolicy가 Always인 DaemonSet이 크래시 루프에 빠지면 노드 수만큼 이미지 풀이 반복된다. 레지스트리 트래픽이 NAT 몇 대로 모이면 출발지 IP 몇 개가 속도 제한에 걸려 리전 전체가 이미지를 받지 못한다. NAT를 바꾸면 그 IP를 허용해 둔 외부 서비스 연결도 함께 끊긴다. 파드에 거는 어드미션 웹훅은 사용자가 아니라 컨트롤러가 만드는 파드까지 막는다. 발표자들은 대규모 클러스터에서는 DaemonSet을 특히 조심하라고 했다. DaemonSet이 기대는 DNS, Vault, 이미지 저장소도 모두 망가뜨려 본 적이 있다고 했다. 수천 대 단위로 무언가를 다루면 그만큼 망가뜨리기 쉽다는 것이다. kubelet 아래에도 인프라가 있다는 것을 잊지 말라고도 했다.

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

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

원인별2