IL-0051 thredUP · 2018-10-23 (게시일)kubernetesawsobservability
thredUP 의 공동 창업자이자 CTO 인 Chris Homer 가 1년 동안 전체 스택을 쿠버네티스로 옮기며 배운 것을 소개한 발표에 나온 장애다. thredUP 은 AWS 에서 kops 로 쿠버네티스를 운영했고, 서비스 수는 30개에서 40개 정도였다.
마이그레이션 도중 노드의 열린 파일 수가 계속 늘었다. 팀은 관련 설정 값을 올렸지만 잠시 버틸 뿐이었고, 결국 노드가 터져 서비스가 내려갔다. 노드를 죽이고 새 노드를 띄워 다시 배포하면 복구는 됐다.
엔지니어 Alex 가 외부 업체와 함께 원인을 파고들었다. 발표자는 업체가 이 문제를 이미 고쳤다는 이유로 업체 이름을 밝히지 않았다. 로그 파일을 쓰는 컨테이너가 세 개 떠 있으면 로그 파일마다 파일 디스크립터가 하나씩 있다. 새 컨테이너가 뜨면 이 클라이언트는 새 로그 파일의 디스크립터를 만들 뿐 아니라 기존 세 파일의 디스크립터도 다시 만들었고, 이전 세 개는 열어 둔 채로 두었다. 쿠버네티스에서는 배포할 때마다 컨테이너가 생기고 사라지며 노드 사이를 옮겨 다니므로, 컨테이너가 많은 노드일수록 열린 파일 수가 빠르게 쌓였다. 팀은 업체와 함께 문제를 다뤘고 결국 그 업체의 서비스를 쓰지 않게 됐다.
쿠버네티스 마이그레이션이 순조로워 보이던 중 Datadog 에서 노드의 열린 파일 수가 계속 늘어나는 것이 보였다.
팀은 검색해서 찾은 관련 설정 값을 올렸다. 한동안은 괜찮아 보였지만 결국 노드가 터지면서 서비스가 내려갔다. 노드를 죽이고 새 노드를 띄운 뒤 다시 배포하면 복구됐지만, 근본 원인은 그대로 남아 있었다.
노드에 컨테이너가 많이 올라간 상태에서 컨테이너가 하나 더 뜨면 열린 파일 수가 급격히 치솟았다. 시간이 오래 지날수록 문제가 커졌다.
증상 ? 서비스 중단파일 디스크립터 고갈
원인 ? 소프트웨어 결함
Datadog 에서 노드의 열린 파일 수가 계속 오르는 것을 보고 알았다.
EC2 에서 믿고 쓰던 서비스와 라이브러리가 쿠버네티스에서도 똑같이 잘 동작한다고 가정하면 안 된다. 그런 도구는 배포 방식과 수명 주기가 다른 환경을 전제로 만들어졌을 수 있다. 쿠버네티스에서는 배포할 때마다 컨테이너가 생기고 사라지고 노드 사이를 옮겨 다니므로, 쓰는 서비스마다 이런 수명 주기에 맞게 만들어졌는지 의심하고 확인해야 한다.
같은 원인 · 공통 텔레메트리 에이전트
같은 원인 · 공통 텔레메트리 에이전트