IL-0109 DFDS · 2023-02-14kubernetesaws
DFDS 의 EKS 클러스터는 2023-02-13 07:30 UTC 정기 노드 롤오버 때 실수로 containerd 를 기본 컨테이너 런타임으로 쓰게 됐다. 다음 날 09:33 UTC, 최종 사용자들이 CloudWatch 로그가 이상하다고 알려 왔고, 팀은 fluentd 를 따라가다 런타임이 docker-shim 이 아니라 containerd 라는 것을 찾았다.
팀은 eks-bootstrap 스크립트의 런타임을 당시 기본값이라고 생각한 docker-shim 으로 되돌리고, 10:29 UTC 에 예정에 없던 노드 롤오버를 시작했다. 런타임 설정이 잘못돼 새 노드는 클러스터에 합류하지 못했다. 10:39 UTC 에 롤오버가 타임아웃으로 실패하면서 새 노드는 좀비로 남았고, ASG 의 desired capacity 도 원래대로 돌아가지 않았다.
10:45 UTC 에 롤오버 없이 EKS 파이프라인을 돌려 dockerd 를 런타임으로 쓰는 새 시작 템플릿을 적용했다. Terraform 은 ASG 의 desired capacity 가 30인 것을 보고 15로 되돌렸다. 고장 난 좀비 노드는 아직 지워지지 않은 상태였고, ASG 의 기본 종료 정책은 가장 오래된 시작 구성이나 시작 템플릿을 쓰는 인스턴스부터 없앤다. 그래서 10:46 UTC 에 정상 노드가 전부 종료됐고, 10:48 UTC 에는 클러스터에 노드가 하나도 없었다.
10:49 UTC 에 노드 롤오버 스크립트로 새 노드를 추가하려 했지만 Docker Hub 타임아웃으로 실패했다. 10:52 UTC 에 다시 시도하자 10:57 UTC 부터 새 노드가 클러스터에 합류하기 시작했고, 11:01 UTC 에 로드밸런서가 새 노드를 정상으로 보고 트래픽을 보냈다. 11:07 UTC 에 Sev 1 티켓이 열렸고 11:59 UTC 에 해결로 닫혔다. 사후 분석은 QA 설정이 운영과 다르고 스테이징 환경이 없었다는 점, QA 시험이 fluentd 로그 수집을 다루지 않았다는 점, 롤오버가 잘못됐을 때 할 일을 적은 문서가 없었다는 점을 기여 요인으로 꼽았다.
2023-02-14 09:33 UTC, 최종 사용자들이 CloudWatch 로그가 제대로 들어오지 않는다고 알려 왔다. 팀은 fluentd 를 조사하다가 컨테이너 런타임이 docker-shim 이 아니라 containerd 로 바뀌어 있다는 것을 찾았다. 전날 07:30 UTC 의 정기 노드 롤오버 때 containerd 가 실수로 기본 런타임으로 설정돼 있었다.
10:29 UTC 에 런타임을 되돌리는 노드 롤오버를 시작했지만 10:39 UTC 에 타임아웃으로 실패했다. 런타임 설정이 잘못돼 새 노드가 클러스터에 합류하지 못했고 좀비 노드로 남았다. 팀은 되돌릴 값을 dockershim 으로 알았지만 실제 값은 dockerd 였다.
10:45 UTC 에 노드 롤오버 없이 EKS 파이프라인을 돌리자 Terraform 이 ASG 의 desired capacity 를 30에서 15로 되돌렸다. 10:46 UTC 에 정상 노드가 모두 종료됐고, 10:48 UTC 에는 클러스터에 노드가 하나도 없었다. 10:49 UTC 에 다시 돌린 노드 롤오버 스크립트는 Docker Hub 타임아웃으로 실패했다.
로그 문제는 최종 사용자들이 CloudWatch 로그가 이상하다고 알려 오면서 드러났다. 노드가 사라진 장애는 사후 분석 기준으로 2분 만에 감지됐다.
상황이 심각해져도 침착해야 한다. 서둘러 고치다 피해를 키우기보다 알려진 정상 설정으로 롤백하는 편이 낫다. 새 워커 노드를 띄우는 일은 cloudinit 스크립트의 어느 단계도 실패하지 않는다는 전제에 크게 기대고 있다.
IL-0179 DEBUG 로그가 쏟아지자 동기 로깅을 하던 요청 스레드들이 가득 찬 stdout 파이프에서 멈춘 채 DB 커넥션을 쥐고 있어, HikariCP 커넥션 풀이 고갈되고 요청이 30초 주기로 한꺼번에 실패했다.MUSINSA · 2026같은 원인 · 공통 컨테이너 런타임, 텔레메트리 에이전트
IL-0019 EKS 모듈 18 업그레이드로 새 노드의 디스크가 20Gb 로 줄어 이미지 풀이 no space left on device 로 실패했다UK Ministry of Justice · 2023같은 원인 · 공통 노드 런치 템플릿, 노드 풀
IL-0091 Terraform 으로 노드 인스턴스 타입을 바꾸자 노드가 한꺼번에 교체되어 사용자 운영 파드가 모두 지워지고 서비스가 내려갔다UK Ministry of Justice · 2023같은 원인 · 공통 노드 풀, Terraform
IL-0005 새 텔레메트리 서비스가 모든 노드에서 무거운 쿠버네티스 API 요청을 보내 대형 클러스터의 컨트롤 플레인이 무너졌고, DNS 기반 서비스 디스커버리가 깨져 OpenAI 의 모든 서비스가 멈췄다OpenAI · 2024같은 원인 · 공통 텔레메트리 에이전트
IL-0114 클러스터 용량을 늘리던 중 버전이 고정되지 않은 VPC CNI 플러그인이 자동으로 업데이트돼 새 파드가 IP 를 받지 못하고 Pending 에 머물렀고, 메인넷 운영 환경의 정산이 약 3.5시간 멈췄다.CoW Protocol · 2024같은 원인 · 공통 노드 풀
https://incidentlib-mcp.benchlet.com/mcpAPI 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.
IL-0017 live 클러스터 노드 6대에서 VPC CNI 가 IP 주소를 할당하지 못해 새 파드가 ContainerCreating 에 멈췄다UK Ministry of Justice · 2023같은 원인 · 공통 노드 풀
같은 원인 · 공통 Terraform
IL-0061 Terraform 상태 파일이 리뷰 빌드에서 바뀐 데다 권한 차이까지 겹쳐 Terraform 이 운영 GKE 클러스터 세 개 중 두 개를 삭제했다Spotify · 2019같은 원인 · 공통 Terraform