Incident Library

IL-0233 Nebius · 2025-03-13kubernetesnetworking

eu-west1 에서 Managed Kubernetes 의 거의 모든 파드가 네트워크 연결을 잃었고 롤백으로도 돌아오지 않았다

2025-03-13 eu-west1 리전에서 VPC 서비스 컨트롤 플레인 구성 요소 하나를 릴리스하자 Managed Services for Kubernetes 고객 파드에 대규모 네트워크 장애가 났다. 13:36 UTC 에 카나리 배포를, 14:35 UTC 에 리전 전체 배포를 시작했고, Nebius 팀은 15:13 UTC 에 문제를 알았다. eu-west1 의 거의 모든 Managed Kubernetes 파드가 13:36 에서 18:11 UTC 사이에 한동안 연결을 잃었다.

VPC 컨트롤 플레인의 호스트 구성 요소는 BGP 메시지를 주고받아 처리하고, 경로를 광고하고 철회한다. 이 구성 요소에는 경로 광고의 route distinguisher 를 일부 무시하는 버그가 오래전부터 있었다. 이번 릴리스가 새 기능을 위해 route distinguisher 값을 바꾸자, 따로 다뤄야 할 IP alias 광고 두 개가 하나로 합쳐졌다. 그래서 철회 한 번이 서로 다른 광고 두 개를 함께 지웠다. 광고 두 번과 철회 한 번이 이어지자 데이터 플레인에 활성 경로가 하나도 남지 않았고, 그 경로로 가는 패킷은 처리되지 않았다. 가상 머신 네트워크 인터페이스의 IP alias, 곧 prefix delegation 이 망가졌다. Managed Kubernetes 의 파드 네트워크는 이 방식에 기대고 있었다. 이번 릴리스가 바꾼 것은 Managed Kubernetes 파드의 업데이트 메시지뿐이어서 다른 서비스는 영향을 받지 않았다.

15:30 UTC 의 롤백은 효과가 없었다. 롤백해도 같은 순서의 업데이트 메시지가 route distinguisher 만 뒤바뀐 채 나왔기 때문이다. 16:41 UTC 에 팀은 문제가 난 노드에서 구성 요소를 재시작하면 그 노드가 풀린다는 것을 찾아 노드를 하나씩 재시작했다. 17:36 UTC 에 실제 원인을 찾았고, 17:57 UTC 에 재시작만으로 고쳐진다고 확신해 병렬 재시작을 시작했다. 18:11 UTC 에 영향이 완전히 해소되었다.

테스트 환경과 카나리에서는 이 문제를 잡지 못했다. 문제가 재현되려면 두 조건이 맞아야 했다. 첫째, route distinguisher 를 바꾸는 릴리스 시점에 IP alias 가 이미 있어야 했다. 둘째, IP alias 로 패킷을 보내는 가상 머신의 노드가 받는 가상 머신의 노드보다 먼저 업데이트되어야 했다. 테스트 환경의 상시 e2e 가상 머신은 첫 조건만 맞았다. eu-west1 카나리도 사정이 비슷했고, 상시 e2e 가상 머신은 카나리 노드에 있지 않았다. 기술 지표가 평소 값에서 벗어날 때 울리는 알림이 모자라 대응 시간도 크게 늘었다.

심각도
–
영향 범위
Practically every pod of Managed Services for Kubernetes in eu-west1 lost connectivity for at least some time between 13:36 and 18:11 UTC
영향 사용자
Clients running Managed Services for Kubernetes in eu-west1
지역
eu-west1
감지까지
1h 37m
복구까지
4h 35m

증상

2025-03-13 eu-west1 리전에서 Managed Services for Kubernetes 고객의 파드가 거의 모두 13:36 에서 18:11 UTC 사이에 적어도 한동안 네트워크 연결을 잃었다. Nebius 팀은 15:13 UTC 에 문제를 알아챘다. eu-north1 리전은 영향을 받지 않았다.

문제는 VPC 컨트롤 플레인 구성 요소의 릴리스와 함께 시작되었다. 13:36 UTC 에 eu-west1 카나리 배포를 시작했고, 14:35 UTC 에 리전의 나머지 노드 전체로 배포를 넓혔다. 영향을 받은 것은 Managed Kubernetes 파드의 연결뿐이었다.

당직 엔지니어는 15:30 UTC 에 릴리스를 롤백했지만, 16:00 UTC 에 롤백이 듣지 않았다는 것이 분명해졌다. 16:20 UTC 에 팀은 문제가 IP alias 와 관련 있다는 것까지 밝혔지만 전체 그림은 아직 몰랐다. 16:41 UTC 에 팀은 문제가 난 노드에서 구성 요소를 손으로 재시작하면 그 노드의 문제가 풀린다는 것을 찾았다.

증상 네트워크 도달 불가

원인

촉발
eu-west1 에 배포한 VPC 컨트롤 플레인 구성 요소의 릴리스가 새 기능에 필요한 route distinguisher 값을 바꿨다. 이 변경으로 오래전부터 코드에 있던 버그가 실제로 드러났다.

감지

–

조치

후속 조치

교훈

문제를 재현하려면 두 조건이 함께 맞아야 해서 테스트 환경과 카나리의 e2e 테스트로는 잡지 못했다. 기술 지표가 평소 값에서 벗어날 때 울리는 알림이 모자라 대응이 늦어졌다. 이번 경우에는 경로 수와 패킷 drop 수가 민감하게 반응한 지표였다.

출처

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: 네트워크 컨트롤 플레인, BGP 라우팅. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.