IL-0099 2i2c · 2025-05-12kubernetes
2025년 5월 12일 2i2c 가 운영하는 Earthscope 허브에서 워크숍과 단기 강좌 도중 사용자 서버 시작이 15분을 넘고 커널이 죽었다. 약 30명이 듣는 강좌와 허브를 쓰던 다른 강사들이 영향을 받았다.
워크숍이 쓰던 예전 프로필 옵션은 32GB 노드에서 메모리를 8GB 보장했지만 상한을 두지 않아 메모리 오버커밋이 컸다. 한 사용자의 메모리 사용이 보장량을 넘어 치솟으면 같은 노드를 쓰는 다른 사용자의 파드가 축출돼 커널이 죽었다.
첫날 밤 helm 롤아웃과 허브 재배포로 조금 나아졌지만 문제는 남았다. 다음 날 원인을 찾은 엔지니어들은 워크숍 직전에 사용자 프로필의 노드 공유 비율과 상한을 바꾸지 않기로 했다. 대신 medium 프로필을 열고 보장량을 올려 오버커밋을 줄였고, 노드 15개를 미리 띄워 30명 워크숍을 치렀다. 5월 14일에는 작은 노드용 프로필의 메모리 보장량과 상한을 같게 맞추는 변경을 배포했고, 그날 워크숍은 문제없이 끝났다.
2025년 5월 12일 20:15 EEST 에 Freshdesk 지원 티켓이 들어왔다. 워크숍 중 사용자 서버가 시작하는 데 15분 넘게 걸리고 커널이 죽는다는 내용이었다. 같은 허브를 다른 용도로 쓰던 강사들도 영향을 받았다.
20:59 에는 약 30명이 듣는 단기 강좌에서 허브에 큰 문제가 있다는 보고가 따로 들어왔다. 21:05 에 엔지니어가 helm 롤아웃과 허브 재배포를 하자 상황이 나아지는 듯했다. 하지만 21:59 에 커뮤니티는 서버는 다시 뜨지만 여전히 멈춘다고 알렸고, 22:00 에 엔지니어는 문제가 계속된다며 tornado.web.HTTPError: HTTP 404: Not Found (Kernel does not exist 오류를 보고했다.
두 번째 엔지니어가 로그를 살폈지만 뚜렷한 이상을 찾지 못했고, 허브 자체가 아니라 자원 고갈 문제라고 결론을 내렸다. Grafana 의 클러스터 정보 대시보드에서는 허브가 돌던 코어 노드의 CPU 사용률이 높았다.
원인은 다음 날 14:30 에 찾았다. 워크숍이 쓰던 예전 프로필 옵션은 32GB 노드에서 메모리를 8GB 보장했지만 상한은 두지 않았다. 사용자가 보장량보다 꾸준히 더 쓰면 다른 사용자의 커널이 죽었다.
증상 ? 파드 축출
원인 ? 용량 한계
커뮤니티가 Freshdesk 지원 티켓으로 알렸다. 티켓은 20:15 에 열렸고 20:49 에 #support-freshdesk 슬랙 채널로 팀에 전달됐으며, 20:57 에 첫 엔지니어가 확인했다.
메모리 상한 없이 보장량만 둔 프로필에서는 노드를 나눠 쓰는 사용자끼리 서로를 축출할 수 있다. 메모리 보장량과 상한을 같게 두면 한 사용자의 메모리 급증이 같은 노드의 다른 사용자에게 번지지 않는다. 이번에는 로그에 뚜렷한 오류가 없었고 원인은 프로필 설정에 있었다. 워크숍 직전에는 프로필 구조를 바꾸지 않고 노드를 미리 띄우는 쪽으로 대응했다.
같은 원인 · 공통 노드 풀, 컨테이너 메모리 한도
같은 원인 · 공통 노드 풀, 컨테이너 메모리 한도
같은 원인 · 공통 노드 풀, 컨테이너 메모리 한도
같은 원인 · 공통 노드 풀, 컨테이너 메모리 한도
같은 원인 · 공통 노드 풀
같은 원인 · 공통 노드 풀
같은 원인 · 공통 노드 풀
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 노드 풀
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도