IL-0169 Scaleway · 2024-01-24kubernetes
2024-01-24 23:48 CET, FR-PAR 리전의 Scaleway Kubernetes API 가 메모리 부족 상태에 빠졌다. 동시에 몰린 배포가 원인이었다. 이 API 는 노드 인증도 맡고 있었다. 그래서 API 가 쓰러지자 kubelet 이 lease 를 갱신하지 못했고, 노드는 NotReady 가 된 채 끝없이 재시도했다. 관리형 Kubernetes 서비스인 Kapsule 과 Kosmos 를 공유 환경과 전용 환경에서 쓰는 고객, 그리고 Cockpit 같은 일부 제품이 영향을 받았다.
Kubernetes 쪽에서 고장 난 구성 요소들이 보내는 요청이 API Gateway 로 몰려 부하가 크게 늘었다. API Gateway 는 응답 시간이 늘어 일부 요청이 타임아웃까지 갔지만 완전히 멈추지는 않았다. 과거 장애 뒤에 해 둔 설정 조정 덕분에 갑작스러운 요청 급증도 전보다 잘 견뎠다.
엔지니어들은 00:35 부터 00:40 사이 Kubernetes API 의 메모리 한도와 가비지 컬렉션 임계값을 올리고 주요 서비스의 복제본을 늘렸다. 00:43 에 API Gateway 요청이 빠르게 줄었고, 00:54 에 노드가 돌아오기 시작했다. 인스턴스 작업이 대량으로 밀려 있어 이를 지켜봤다. 01:03 에 레지스트리 캐시를 비우는 등 추가 조치를 하자 모든 FR-PAR 클러스터가 안정되기 시작했고, 01:13 에 Cockpit 지표가 다시 나타나며 완전히 복구됐다.
2024-01-24 23:48 CET, FR-PAR 리전에서 Kapsule 과 Kosmos 고객 클러스터의 일부 노드가 NotReady 로 바뀌었다. 같은 시각 API Gateway 로 들어오는 요청이 크게 치솟았다.
API Gateway 응답 시간이 늘어 일부 요청은 타임아웃까지 갔다. 노드는 컨트롤 플레인에 인증하지 못해 일시적으로 NotReady 상태가 됐고, 해당하는 클러스터에서는 자동 복구가 돌아 노드를 교체했다. Cockpit 같은 다른 제품도 영향을 받아 지표가 끊겼다가 01:13 에 다시 나타났다.
00:00:10 에 내부 에스컬레이션을 거쳐 당직 엔지니어가 장애를 맡았다. 00:00 부터 00:30 사이에 진단한 결과, Kubernetes API 의 메모리 부족이 원인으로 확인됐다.
원인 ? 용량 한계
23:48 에 API Gateway 부하가 늘어난 것이 감지됐고, 00:00:10 에 내부 에스컬레이션을 거쳐 당직 엔지니어가 맡았다.
탄탄한 모니터링과 빠른 대응 체계가 중요하다. Kubernetes API 가 노드 인증까지 맡고 있어서 API 의 메모리 부족이 곧장 노드 NotReady 로 번졌다. Scaleway 는 이를 막으려고 로컬 인증 캐시와 노드 인증 개선을 계획했다.
같은 원인 · 공통 컨테이너 메모리 한도, kubelet
같은 원인 · 공통 kubelet
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 kubelet
같은 원인 · 공통 컨테이너 메모리 한도
같은 원인 · 공통 kubelet
같은 원인 · 공통 컨테이너 메모리 한도