IL-0403 Binder Project · 2022-06-02kubernetesgcp
mybinder.org 의 prod hub 가 실제로는 넘지 않은 파드 quota 를 넘었다는 오류 때문에 새 파드를 만들지 못했다
GKE 의 resource quota 버그 때문에 mybinder.org 의 prod hub 가 새 파드를 만들지 못했다. ResourceQuota gke-resource-quotas 는 실제로는 넘지 않은 파드 quota 를 넘었다고 판단했다. 2022년 6월 2일 10:00 CET 부터 mybinder.org 는 새 파드를 하나도 띄우지 못했고, 팀은 21:00 에 사용자가 Matrix 채널에 알리고 나서야 알았다. 21:06 에 로그에서 오류를 찾았다. 21:22 에는 StackOverflow 글 두 개에서, 이것이 gke-resource-quotas 객체의 버그이며 이 객체를 지우면 다시 만들어지면서 정상으로 동작한다는 내용을 찾았다. 21:24 에 gke-resource-quotas 를 지우자 곧바로 파드를 다시 만들 수 있었고, launch 성공률이 금방 100%로 돌아왔다. 보고서 요약은 영향이 약 9시간 이어졌다고 적었다. 타임라인에 따르면 영향은 10:00 부터 21:24 까지였다.
- 심각도
- –
- 영향 범위
- The mybinder.org prod hub could not create any new pods, so no Binder sessions launched
- 영향 사용자
- –
- 지역
- –
- 감지까지
- 11h
- 복구까지
- 11h 24m
증상
2022년 6월 2일 10:00 CET 부터 mybinder.org 가 새 파드를 하나도 띄우지 못했다. 21:00 에 사용자가 Matrix 채널에 Binder 장애를 알렸고, 팀원이 살펴보니 몇 시간째 파드가 뜨지 않고 있었다.
21:06 에 로그에서 파드 quota 한도에 걸렸다는 오류를 찾았다. 응답 본문은 pods "jupyter-<user>-2dpythonmoocproblems-2drkut24bk" is forbidden: exceeded quota: gke-resource-quotas, requested: pods=1, used: pods=15k, limited: pods=15k 였고 reason 은 Forbidden, code 는 403 이었다.
팀은 실제로 파드 15k 개를 쓰고 있지 않았으므로 이 오류를 이해할 수 없었다.
원인
원인 소프트웨어 결함
- 촉발
- –
감지
21:00 에 사용자가 Matrix 채널에 Binder 장애를 알렸고, 팀은 이 채널에서 소식을 받았다. 이를 본 팀원이 확인해 보니 몇 시간째 파드가 뜨지 않고 있었다. 큰 장애를 알아채기까지 11시간이 걸렸다.
조치
- 21:24 에 gke-resource-quotas 를 지웠고, 곧바로 배포가 파드를 다시 만들 수 있게 돼 launch 성공률이 금방 100%로 돌아왔다.
후속 조치
- 가동 시간 감시와 알림 문제를 이슈 https://github.com/jupyterhub/mybinder.org-deploy/issues/611 에서 다룬다.
교훈
Binder 에 큰 장애가 났다는 것을 알아채기까지 11시간이 걸렸다. resource quota 객체를 지우자 시스템이 아주 빨리 바로잡혔고, 지울 객체를 알고 나면 고치는 일은 비교적 간단했다. 변경할 기술과 권한을 가진 팀원이 현지 시각 밤 11시에 마침 컴퓨터 앞에 있었던 것은 운이었다.
출처
참고 문서
관련 사례
–
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0403
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0403/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.