IL-0036 Universe · 2017-07-21kubernetes
Universe 는 Discover 검색 결과를 흐리던 버그를 고쳤다. 전문 검색 색인에 들어가 있던 데이터 필드들을 빼도록 색인을 다시 정의했고, 이 변경을 배포한 뒤 재색인 Job 을 띄웠다. 이 서비스는 얼마 전 쿠버네티스로 옮겨졌고, 팀은 이런 백그라운드 작업을 쿠버네티스 Job 으로 돌렸다.
재색인 Job 은 노드의 가용 자원을 모두 써 버렸다. 노드는 Unhealthy 가 되어 종료됐고, 쿠버네티스는 이 Job 을 다른 노드에 다시 배치했다. 그 노드도 같은 일을 겪었다. 이 과정이 되풀이되어 모든 노드가 복구 중인 상태가 됐고, 새 노드가 올라오면 곧바로 다시 죽었다. Job 에 RestartPolicy=Never 를 설정했지만 이 값은 파드에만 적용됐다. Job 자체는 실패하면 항상 다시 시작되고 두 번 이상 실행될 수 있다.
팀이 문제의 Job 을 스케줄러에서 지우자 모든 노드가 자동으로 회복해 정상으로 돌아왔다. 장애 동안 리포트 API, 검색 API, 쿠버네티스 클러스터 UI 가 영향을 받았다.
재색인 Job 을 띄운 직후 Universe 의 리포트 API 와 검색 API 에 문제가 생겼다. 쿠버네티스 클러스터 UI 도 함께 영향을 받았다.
14:37 EDT 에 상태 페이지에 글이 올라왔다. 검색과 리포트를 쓸 수 없다는 보고를 조사하고 있다는 내용이었다. 14:55 EDT 에 해결됐다는 공지가 올라왔다.
노드는 하나씩 Unhealthy 가 되어 종료됐다. 결국 모든 노드가 복구 중인 상태가 됐고, 새 노드가 올라와도 곧바로 다시 죽었다.
팀은 Job 에 RestartPolicy=Never 를 설정해 두었다. 조사해 보니 이 설정은 Job 이 아니라 파드에 적용됐다. Job 은 실패하면 항상 다시 시작되고 두 번 이상 실행될 수 있었다.
재색인 Job 을 띄운 직후 팀이 리포트 API, 검색 API, 쿠버네티스 클러스터 UI 의 문제를 알아챘다. 팀은 상태 페이지에 검색과 리포트를 쓸 수 없다는 보고를 조사하고 있다고 올렸다.
–
RestartPolicy=Never 는 파드에만 적용되고 Job 에는 적용되지 않는다. Job 은 실패하면 항상 다시 시작되고 두 번 이상 실행될 수 있다. 노드 자원을 다 쓰는 작업을 Job 으로 돌리면 그 Job 이 노드를 옮겨 다니며 클러스터의 노드를 모두 쓰러뜨릴 수 있다.
같은 원인 · 공통 파드 스케줄링과 배치
같은 원인 · 공통 파드 스케줄링과 배치
같은 원인 · 공통 파드 스케줄링과 배치