IL-0514 Python Software Foundation · 2022-07-28kubernetesdatabase
클라우드 사업자의 노드 교체 뒤 Consul 이 리더를 뽑지 못하고 Vault 가 봉인된 채 남아 PyPI 백엔드가 7분 동안 응답하지 않았다
2022-07-28 17:24 UTC 부터 PyPI 가 도는 쿠버네티스 클러스터의 클라우드 인스턴스 여러 대를 사업자가 알 수 없는 장애로 자동 교체했고, 18:20 UTC 에는 모든 인스턴스가 교체되어 정상이었다. 교체로 많은 파드가 재배치되며 클러스터 안의 Consul 과 Vault 가 새 노드에서 재시작됐다. 18:23 UTC 에 Vault 봉인 해제가 필요하다는 첫 알림이 왔고, 살펴보니 Vault 컨테이너는 모두 쓸 수 없었고 Consul 은 새 리더를 뽑지 못했다.
Consul 파드 하나가 Terminating 상태에 멈춰 있어서 Consul 서버 탐색 기능이 선출에 서버 하나가 더 들어오기를 기다렸다. PyPI 애플리케이션 서버를 배포하고 보호하는 관리 계층인 Consul 과 Vault 가 내려가 있자, 재배치된 PyPI 컨테이너가 시작하지 못했고 18:46 UTC 에 PyPI 가 응답하지 않게 됐다. 대응한 인프라 팀원이 멈춘 파드를 강제로 지워 다시 만들어지게 하자 Consul 이 회복됐고, 이어 새 Vault 컨테이너의 봉인을 풀었다. PyPI 백엔드 장애는 18:46 UTC 부터 18:53 UTC 까지였다.
- 심각도
- –
- 영향 범위
- PyPI backends
- 영향 사용자
- –
- 지역
- –
- 감지까지
- –
- 복구까지
- 7m
증상
18:23 UTC 에 PSF 인프라 팀에 Vault 컨테이너가 적어도 하나 내려가 있고 다시 올라오려면 봉인 해제가 필요하다는 첫 알림이 왔다. 살펴보니 클러스터의 Vault 컨테이너는 모두 쓸 수 없었고 Consul 컨테이너는 새 리더를 뽑지 못하고 있었다.
앞서 17:24 UTC 부터 클라우드 사업자가 알 수 없는 장애를 이유로 PyPI 가 도는 쿠버네티스 클러스터의 클라우드 인스턴스 여러 대를 자동으로 교체했다. 18:20 UTC 에는 모든 인스턴스가 교체되어 클러스터의 정상 노드가 됐지만, 이 과정에서 많은 파드가 재배치되며 Consul 과 Vault 가 새 노드에서 재시작됐다.
Consul 을 되살리는 일이 꼬였다. Consul 파드 하나가 Terminating 상태에 멈춰 있었고, Consul 서버 탐색 기능이 선출에 서버 하나가 더 참여하기를 기다리며 멈췄다.
Consul 과 Vault 가 내려가 있는 동안 PyPI 애플리케이션을 띄우려는 새 컨테이너는 실패했다. 노드 교체로 재배치된 컨테이너가 시작하지 못했고, 쿠버네티스가 정해진 개수를 맞추려고 컨테이너를 계속 재배치하면서 18:46 UTC 에 PyPI 가 응답하지 않게 됐다.
원인
원인 클라우드 제공자 장애
- 촉발
- 2022-07-28 17:24 UTC 부터 클라우드 사업자가 알 수 없는 장애를 이유로 PyPI 가 도는 쿠버네티스 클러스터의 클라우드 인스턴스 여러 대를 자동으로 교체했다.
감지
18:23 UTC 에 PSF 인프라 팀에 Vault 컨테이너가 적어도 하나 내려가 있고 봉인 해제가 필요하다는 알림이 왔다.
조치
- Terminating 상태에 멈춘 Consul 파드를 강제로 지우고 다시 만들어지게 했다. 그 뒤 Consul 회복이 시작됐다.
- Consul 을 되살린 뒤 새 Vault 컨테이너의 봉인을 풀었다.
후속 조치
–
교훈
–
출처
- https://status.python.org/incidents/wcwq0pp25ffb · official-status · 보관본
관련 사례
IL-0588AppOptics 와 Librato 의 메트릭 API 가 대부분의 데이터에 5xx 를 내고 Kafka 파티션이 리더 없이 오프라인으로 남았다AppOptics · 2018같은 원인 · 공통 코디네이션 키-값 저장소
같은 원인 · 공통 코디네이션 키-값 저장소
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0514
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0514/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.