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

사례3건

3건 중 1~3번째

  1. 증상

    강의 영상 업스케일링용 GPU 파드를 띄우자 GPU 노드가 정상적으로 만들어져 Ready 가 됐다가, 약 10~11분 뒤 갑자기 비정상으로 판정되어 Karpenter 가 노드를 교체했다. 새로 만든 노드에서도 같은 일이 되풀이됐고, GPU 파드가 계속 재시작되어 작업이 진행되지 않았다.

    촉발

    kubelet OOM 으로 생기던 좀비 노드를 정리하려고 Karpenter 설정에서 nodeRepair 기능 게이트를 켰다.

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

    GPU 노드가 Ready 뒤 10~11분 만에 계속 교체되는 것을 보고 노드 이벤트를 분석해 DCGMError 메시지를 찾았다.

    조치
    • Karpenter 설정에서 nodeRepair 기능 게이트를 false 로 바꿔 Node Auto-Repair 를 껐다.
    교훈

    Karpenter Node Auto-Repair 는 AcceleratedHardwareReady=False 도 노드를 교체할 사유로 본다. 그래서 GPU 연산에는 문제가 없어도 GPU 모니터링 라이브러리 하나가 빠지면 노드가 끝없이 교체될 수 있다. Node Auto-Repair 를 켠 뒤 GPU 노드가 자주 교체되면 이 기능을 꺼 볼 만하다. 좀비 노드 문제는 이제 메모리가 4GB 이상인 인스턴스 타입을 써서 완화했다.

  2. 증상

    6월 9일 오후 11시 36분 PDT 에 여러 서비스에서 동시에 알림이 울렸다. 인프라가 네트워크 연결을 잃기 시작했고, 상황은 바로 엔지니어링 팀에 에스컬레이션됐다.

    촉발

    매일 예약된 호스트 OS 업데이트가 영향받은 노드에서 네트워크 관리 서비스인 systemd-networkd 를 의도치 않게 재시작했다.

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

    장애가 시작된 6월 9일 오후 11시 36분 PDT 에 인프라가 네트워크를 잃기 시작하면서 여러 서비스의 알림이 바로 울렸고, 상황은 즉시 엔지니어링 팀에 에스컬레이션됐다.

    조치
    • 6월 10일 오전 2시부터 영향받은 GPU VM 을 대규모로 다시 이미징했다.
    • 6월 10일 오전 6시 49분에 복구 자동화를 배포해 아직 영향받은 상태인 나머지 노드를 재시작했다.
    • 백그라운드에서 도는 업데이트를 멈췄다.
    후속 조치
    • GPU VM 의 매일 자동 업데이트를 끄고, 업데이트는 직접 정한 일정에 맞춰서만 하도록 바꿨다.
    • systemd-networkd 와 자체 네트워크 서비스가 충돌하지 않도록 시스템 설정을 고쳤다.
    • 전체 VM 설정을 감사해 비슷한 위험을 찾아 줄인다.
    • GPU VM 과 클러스터 같은 핵심 인프라의 복구 속도를 높이는 작업에 우선순위를 둔다.
    • 대응 능력을 높이려고 재해 복구 훈련을 정기적으로 계획한다.
    교훈

    호스트 OS 의 자동 업데이트가 네트워크 관리 서비스를 재시작하면, 같은 노드에서 라우트를 관리하는 다른 에이전트와 충돌해 노드 전체가 네트워크를 잃을 수 있다. 매일 도는 업데이트는 모든 노드에 거의 같은 시각에 적용된다. 네트워크가 끊긴 노드를 빠르게 되살릴 비상 도구가 없으면 노드를 다시 이미징할 수밖에 없고 복구가 길어진다.

  3. 증상

    2024-03-12 US/Pacific 08:00 부터 GKE 에서 Container-Optimized OS 를 쓰는 GPU 노드가 일부 NVIDIA GPU 드라이버를 받지 못했다. 새로 만들거나 다시 만든 노드는 GPU 드라이버가 작동하지 않았고, 그 드라이버를 쓰는 워크로드가 돌지 못했다.

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

    보고서는 Google 이 장애를 어떻게 알아챘는지 적지 않았다. GKE 사용자는 GPU 노드에서 드라이버를 설치할 때 "Failed to download GPU driver installer, status: 403 Forbidden" 오류를 보고 이 장애를 알아볼 수 있었다.

    조치
    • GPU 드라이버 다운로드를 시도하는 자동 노드 재생성을 멈췄다.
    • 드라이버를 공급하는 파트너와 함께 스토리지 버킷 접근 문제를 해결했다.
    교훈

    상태 페이지 보고서는 교훈이나 후속 조치를 적지 않았다.

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

이 3건에서 가장 많이 나오는 구성 요소: 노드 운영체제 이미지, GPU 드라이버. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별3