IL-0074 AirMap · 2018-07-19kubernetesnetworking
AirMap 플랫폼은 2018년 7월 19일 15:00 UTC 부터 20:00 UTC 까지 서비스가 중단되었다. 사용자 프로필을 가져오는 pilot 서비스부터 응답하지 않아 로그인이 실패했고, 결국 모든 서비스가 응답하지 않았다. 운영 쿠버네티스 클러스터에서 API 레플리카 대부분이 재시작을 반복했고 워커 노드 일부가 Not Ready 가 되었다. 로그에는 네트워크와 DNS 실패가 있었다. 내부 트래픽 관리 인프라에 붙는 사이드카 컨테이너가 이 실패로 죽으면서 워크로드 컨테이너도 함께 죽었다.
kubelet 을 되살려도 노드는 곧 다시 Not Ready 가 되었고, Not Ready 노드는 늘어났다. 18:00 UTC 쯤 대응팀은 클러스터의 모든 워커 노드를 시차를 두고 재시작하기로 했다. 서비스 에이전트 풀을 받치는 워커 노드가 정족수를 채울 만큼 재시작되자 상황이 풀리기 시작했고, 재시작한 노드에 정상 레플리카가 스케줄되었다. 약 1.5시간 뒤 모든 워커 노드의 재시작이 끝났고, 5xx 응답이 사라지고 상태 표시가 초록으로 바뀌었다.
AirMap 은 장애 중 조사와 사후 조사를 거쳐 증상을 쿠버네티스 이슈 #45419 와 연결했다. 이 이슈에서 근본 원인이 밝혀졌고 좋은 수정 후보도 나와 있었다. AirMap 이 쓰던 클라우드는 MS Azure 였다.
2018년 7월 19일 15:00 UTC 쯤 모니터링 인프라가 일부 API, 특히 pilot 과 tiles 의 5xx 응답 증가를 알렸다. 사용자 프로필을 가져오는 pilot 서비스가 먼저 응답하지 않아 플랫폼 로그인이 실패했고, 문제는 거기서 퍼져 나갔다.
영향을 받은 API 는 모두 운영 쿠버네티스 클러스터에서 돌고 있었다. API 레플리카 대부분이 재시작을 반복하며 트래픽을 받지 못했고, 워커 노드 일부가 Not Ready 로 보고되었다.
팀은 멈춘 워커 노드의 kubelet 을 되살려 보았지만 노드는 곧 다시 Not Ready 가 되었고, 그사이 다른 워커 노드도 Not Ready 로 표시되기 시작했다.
파드와 컨테이너 로그에는 네트워크와 DNS 실패가 찍혀 있었다. 내부 트래픽 관리 인프라에 연결하는 사이드카 컨테이너가 이 실패로 죽으면서 워크로드 컨테이너까지 함께 죽었고, 그래서 재시작이 반복되었다.
원인 소프트웨어 결함
15:00 UTC 쯤 모니터링 인프라가 일부 API, 특히 pilot 과 tiles 의 5xx 응답 증가를 알렸다.
AirMap 은 운영 클러스터의 증상을 오픈소스 커뮤니티의 알려진 이슈와 대조해 근본 원인과 수정 후보를 찾을 수 있었다. 업스트림 수정이 클라우드 제공자에게 반영되기 전까지는 워커 노드를 정기적으로 롤링 재시작해 같은 장애를 막는다.
IL-0112 나중에 회수된 EKS 노드 AMI 로 노드를 교체한 뒤 노드가 PLEG is not healthy 를 보고하며 NotReady 를 오갔고 파드 네트워크 타임아웃이 났다DFDS · 2022같은 원인 · 공통 kubelet
IL-0139 Calico 네트워크 정책을 쓰는 GKE 클러스터를 1.22 이상으로 업그레이드하자 경쟁 조건 때문에 CNI 정리가 Unauthorized 로 실패해 파드가 Terminating 이나 Pending 에 멈췄다.Google Cloud · 2022같은 원인 · 공통 kubelet
같은 원인 · 공통 kubelet
IL-0038 kubelet 설정 변경을 롤링 업데이트하다 쿠버네티스 버그로 kubelet 이 올라오지 못해 한 클러스터의 노드가 NotReady 가 되고 파드 절반쯤이 축출됐다Oath · 2018같은 원인 · 공통 kubelet
IL-0003 etcd 클러스터 재구성 뒤 쿠버네티스 버그로 linkerd 가 서비스 위치 갱신을 받지 못했고, linkerd 를 모두 재시작하자 엔드포인트가 없는 서비스를 파싱하지 못하는 오류가 드러나 플랫폼 전체가 멈췄다Monzo · 2017같은 원인 · 공통 kubelet
https://incidentlib-mcp.benchlet.com/mcpAPI 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.