IL-0114 CoW Protocol · 2024-04-19kubernetesawsnetworking
2024년 4월 19일 CoW Protocol 은 기본 유동성의 유동성 조회 로직을 바꾼 뒤 성능 회귀를 겪었다. 메모리와 CPU 사용량이 늘어 핵심 서비스가 자주 축출됐다. 팀은 이를 해결하려고 운영 쿠버네티스 클러스터의 용량을 늘렸다.
용량 확장은 IaC 자동화로 이루어졌는데, 이때 VPC CNI 플러그인이 예기치 않게 업데이트됐다. IaC 에 CNI 버전이 고정돼 있지 않았고, 최근 IaC 라이브러리 버전도 바뀐 상태였다. 패키지 버전을 제대로 고정하지 않은 데다 이 변화가 겹쳐 네트워크 리소스가 자동으로 업데이트됐다. 호환되는 CNI 버전이 없어서 새로 배포된 파드는 IP 주소를 받지 못해 Pending 에 머물렀고, 업데이트와 파드 종료도 막혔다. 재시작하는 파드마다 Pending 에 걸리면서 시스템은 점점 더 쓸 수 없게 됐다.
장애는 16:40 UTC 에 정산이 멈추면서 시작됐다. 팀은 17:03 UTC 에 CNI 버전 불일치를 원인으로 찾았다. 19:00 UTC 쯤에는 클러스터 업그레이드를 시작해 새 버전의 네트워크 플러그인을 쓰는 노드 그룹을 새로 만들었다. 서비스는 20:08 UTC 에 돌아왔다. 메인넷 운영 환경은 약 3.5시간 멈췄고 그동안 정산이 이루어지지 않았다.
2024년 4월 19일 16:40 UTC 에 메인넷 운영 환경에서 정산이 멈췄다. 핵심 서비스가 내려가 있었다.
그 전부터 성능 회귀 때문에 메모리와 CPU 사용량이 늘어 핵심 서비스가 자주 축출되고 있었다. 팀은 이를 해결하려고 클러스터 용량을 늘리던 참이었다.
용량을 늘리는 과정에서 CNI 가 의도치 않게 업데이트된 뒤로는 파드가 재시작할 때마다 Pending 상태에 머물렀다. 새로 배포된 파드는 IP 주소를 받지 못했고, 업데이트와 파드 종료도 되지 않았다. 시스템은 점점 더 쓸 수 없는 상태가 됐다. 팀은 17:03 UTC 에 CNI 버전 불일치를 원인으로 짚었다.
원인 ? 설정 변경
장애는 16:40 UTC 에 정산이 멈추면서 시작됐다. 팀은 23분 뒤인 17:03 UTC 에 CNI 버전 불일치를 원인으로 짚었다.
–
IaC 스크립트에 버전을 명시해야 의도치 않은 업데이트를 막을 수 있다. 운영 환경일수록 쉽게 되돌릴 수 있는 변경 관리가 필요하다.
같은 원인 · 공통 AWS VPC CNI, 노드 풀
같은 원인 · 공통 AWS VPC CNI, 노드 풀
같은 원인 · 공통 노드 풀
같은 원인 · 공통 노드 풀
같은 원인 · 공통 AWS VPC CNI
같은 원인 · 공통 노드 풀