IL-0141 Google Cloud · 2023-11-02kubernetesgcpobservability
gke-metadata-server 는 GKE Workload Identity 기능을 이루는 GKE 관리 시스템 워크로드다. Workload Identity 는 GKE Standard 에서는 선택해서 켜고, GKE Autopilot 에서는 항상 켜져 있다. 이 서버의 0.4.272 부터 0.4.280 까지 버전에 잘못된 설정이 들어가 "Unable to sync sandbox" 디버그 로그를 높은 빈도로 냈다. 이 로그가 Cloud Logging 으로 수집되면서 수집 할당량을 소모했고, 월 무료 사용량을 넘긴 고객에게 추가 요금이 생겼다.
장애는 2023-11-02 10:45 US/Pacific 에 시작됐다. Google 은 같은 날 원인을 찾았고, Rapid 채널 고객에게는 컨트롤 플레인을 1.28.2-gke.1157000 이상으로 올리면 고친 버전을 받을 수 있다고 안내했다. 11-06 에 전체 플릿에 수정을 배포하기 시작했다. 이 수정은 과도한 로그를 더 이상 Cloud Logging 으로 수집하지 않게 한다. 11-08 에 배포가 약 25% 진행됐다. Regular 채널, Stable 채널, 릴리스 채널을 쓰지 않는 고객에게는 그동안 우회 방법이 없었다.
2023-11-09 23:00 US/Pacific 에 영향받은 모든 사용자의 문제가 해결됐고, 장애는 2023-11-10 13:37 에 종료로 기록됐다.
Workload Identity 를 켠 GKE 클러스터에서 애플리케이션 로그 양이 크게 늘었다. 늘어난 로그는 "Unable to sync sandbox" 문자열이 든 디버그 로그였고, Cloud Logging 으로 수집돼 수집 할당량을 소모했다. 월 무료 사용량을 넘긴 고객에게는 추가 요금이 나왔다.
로그를 낸 것은 GKE 가 관리하는 시스템 워크로드인 gke-metadata-server 였다. 영향받는 버전은 0.4.272 부터 0.4.280 까지였다. 클러스터가 영향받는지는 kubectl get daemonset -n kube-system -l k8s-app=gke-metadata-server -o yaml 로 데몬셋을 열어 .spec.template.metadata.annotations 의 components.gke.io/component-version 값을 보면 알 수 있다. 값이 0.4.272 와 0.4.280 사이면 영향받는 클러스터다.
11-02 14:09 공지는 gke-metadata-server 와 이 서버에 의존하는 애플리케이션은 계속 동작하지만 메타데이터 서버 호출 지연이 조금 늘 수 있다고 했다. 공지는 과도한 로깅에 CPU 를 쓰느라 gke-metadata-server 의 성능이 떨어질 수 있다고도 했다. Cloud Logging 할당량을 다 쓸 수 있다는 경고도 있었다. 11-03 이후 공지는 클러스터 기능과 성능에는 영향이 없고, 영향은 Cloud Logging 에 쌓이는 추가 로그뿐이라고 적었다.
원인 ? 소프트웨어 결함
상태 페이지의 첫 공지는 2023-11-02 13:32 PDT 에 조사 중이라는 내용으로 올라왔다. 고객은 gke-metadata-server 데몬셋의 components.gke.io/component-version 어노테이션을 보고 자기 클러스터가 영향받는지 확인할 수 있었다.
–
–
–