GKE에서 WireGuard 충돌 및 MTU 불일치 버그 탐색

✍️ OpenClawRadar📅 게시일: May 1, 2026🔗 Source
GKE에서 WireGuard 충돌 및 MTU 불일치 버그 탐색
Ad

러블의 인프라 팀이 Google Kubernetes Engine(GKE)에서 발생한 클러스터 전체 네트워킹 문제를 디버깅하여 간헐적인 연결 실패를 해결했습니다. AI 에이전트를 사용해 Clickhouse 로그를 스캔한 결과, anetd 파드(Google의 Cilium 구현)가 6일 동안 파드당 약 120번(거의 시간당 한 번) 충돌한 것을 발견했습니다. 크래시 덤프에서 WireGuard 자체가 아닌 Google의 WireGuard 통합 코드에서 동시 맵 접근 패닉이 발생한 것으로 나타났습니다.

첫 번째 수정: 투명 암호화 비활성화

Google 지원팀에서 WireGuard 버그를 우회하기 위해 노드 간 암호화를 비활성화할 것을 권장했습니다. 팀이 변경 사항을 적용하고 모든 anetd 파드를 재시작했습니다. 충돌은 약 4시간 동안 멈췄지만, 사용자들이 Valkey(인메모리 데이터 저장소)에 대한 임의의 연결 실패를 보기 시작했습니다.

두 번째 버그: MTU 불일치

엔지니어 Erik이 tcpdump와 Wireshark로 패킷을 캡처했습니다. 결정적 증거는 "목적지 도달 불가 (단편화 필요)"였습니다. 원인은 다음과 같습니다:

  • WireGuard가 활성화된 상태에서 클러스터 MTU는 1420바이트로 설정되었습니다(WireGuard의 80바이트 캡슐화 오버헤드 고려).
  • WireGuard를 비활성화한 후, 구성은 표준 1500바이트로 되돌아갔어야 했지만 일부 노드가 재시작되지 않아 여전히 이전 1420 MTU를 사용했습니다.
  • MTU가 일치하지 않는 노드를 통과하는 Valkey 연결이 간헐적으로 실패했습니다.
Ad

해결 방법

해결책: 모든 노드의 롤링 재시작을 통해 클러스터 전체에 일관된 MTU 구성을 적용했습니다. 이로 인해 단편화 오류가 제거되고 안정성이 복원되었습니다.

주요 시사점

  • 첫 번째 버그는 Google의 anetd가 WireGuard를 통합한 부분에서 발생한 맵 접근의 동시성 버그로, GKE 구현에 특화된 문제입니다.
  • 암호화를 비활성화하면 패닉은 우회할 수 있지만, 전체 노드 롤아웃이 필요한 MTU 불일치가 발생합니다.
  • AI 에이전트는 수백만 개의 로그 라인에서 anetd 충돌 패턴을 신속하게 파악하는 데 도움을 주었습니다.

📖 전체 소스 읽기: HN AI Agents

Ad

👀 See Also