{"id":"IL-0203","org":"Honeycomb","date":"2024-04-09","docs":[],"title":{"en":"A routine Kubernetes cluster system update made the AWS Load Balancer Controller fail, so new pods were never registered with the ALB and Honeycomb's EU1 ingest and UI went down once the last old pods were replaced","ko":"클러스터 시스템 업데이트 뒤 AWS Load Balancer Controller 가 실패해 새 파드가 ALB 에 등록되지 않았고, Honeycomb EU1 의 수집과 UI 가 11분 동안 멈췄다"},"domain":["kubernetes","aws"],"impact":{"scope":"EU1 event ingestion (api.eu1.honeycomb.io) and the EU1 UI, querying, and trigger and SLO alerting (ui.eu1.honeycomb.io) unavailable for about 11 minutes","users":"unknown","region":"EU1"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"A rolling deployment can look healthy while the component that wires new pods into the load balancer is broken; the failure only shows when the last old pod goes away. Honeycomb now treats the AWS Load Balancer Controller as a critical component that needs its own alerting, so deployments can be paused before they remove the last pods that still receive traffic. Extensive testing in development and staging did not reveal the bad interaction.","ko":"AWS Load Balancer Controller 는 배포 때마다 새 파드를 ALB 에 등록하는 핵심 구성 요소였다. 이 컨트롤러가 실패해도 서비스는 바로 멈추지 않았고, 다음 배포에서 마지막 옛 파드가 내려갈 때 끊겼다. 개발 환경과 스테이징 환경에서 충분히 시험한 시스템 업데이트도 운영 클러스터의 다른 구성 요소와 부딪칠 수 있다."},"related":[],"sources":[{"url":"https://status.honeycomb.io/incidents/tn78w6tw950d","kind":"official-status","license":"unknown","archived":null}],"summary":{"en":"On April 9, 2024, event ingestion and the UI of Honeycomb's EU1 instance were unavailable from 22:00:10 to 22:11:30 UTC. Earlier that day Honeycomb had begun rolling out a routine system update to its Kubernetes cluster. The update had been tested extensively in development and staging, but in production it interacted badly with other components of the cluster and made the AWS Load Balancer Controller and other pods fail sporadically.\n\nWith the controller down, new pods were no longer registered with the ALB. The next deployment replaced the old pods one at a time, the ALB kept sending traffic only to the old pods, and when the last of them was terminated the ingestion service and the UI service lost all their traffic. Honeycomb restarted the AWS Load Balancer Controller to restore service and rolled back the system update so the failure would not come back. The exact cause of the interaction was still being investigated when the write-up was posted.","ko":"Honeycomb 은 쿠버네티스에서 서비스를 돌리고, 파드를 하나씩 종료하고 새 파드로 바꾸는 방식으로 배포한다. 새 파드가 뜨면 AWS Load Balancer Controller 가 그 파드를 Application Load Balancer 에 등록하고, ALB 는 그때부터 새 파드로 트래픽을 보낸다. 이번에는 AWS Load Balancer Controller 가 실패해 새 파드가 ALB 에 등록되지 않았다. 그 상태에서 다음 배포가 옛 파드를 하나씩 종료했고, 마지막 옛 파드가 내려가자 이벤트 수집 서비스와 웹 UI 서비스가 거의 동시에 끊겼다. EU1 은 22:00:10 UTC 부터 22:11:30 UTC 까지 쓸 수 없었다.\n\n4월 9일 장애보다 앞서 Honeycomb 은 쿠버네티스 클러스터에 일상적인 시스템 업데이트를 배포하기 시작했다. 업데이트는 개발 환경과 스테이징 환경에서 충분히 시험한 것이었다. 그런데도 클러스터의 다른 구성 요소와 잘 맞지 않아 AWS Load Balancer Controller 와 다른 파드들을 간헐적으로 실패하게 했다. Honeycomb 은 AWS Load Balancer Controller 를 재시작해 서비스를 되살렸고, 재발을 막으려고 시스템 업데이트를 롤백했다. 보고서를 쓴 시점에도 정확한 원인은 조사 중이었다."},"trigger":{"en":"A routine system update to the Kubernetes cluster, rolled out earlier on April 9, followed by a regular deployment that replaced pods one at a time.","ko":"그날 앞서 쿠버네티스 클러스터에 배포한 일상적인 시스템 업데이트가 AWS Load Balancer Controller 를 간헐적으로 실패하게 만들었고, 그 뒤 이어진 서비스 배포가 마지막 옛 파드를 내렸다."},"severity":"unknown","symptoms":["service-unavailable","stale-service-routing"],"timeline":{"detected_after":"8m","resolved_after":"11m"},"date_kind":"incident","detection":{"en":"The first status post, saying the EU1 instance was down, went up at 15:08 PDT (22:08 UTC), about 8 minutes after the outage began. There was no alerting on the AWS Load Balancer Controller.","ko":"상태 페이지 첫 공지는 장애 시작 8분 뒤인 22:08 UTC 에 올라왔고, EU1 인스턴스가 다운돼 조사 중이라는 내용이었다. AWS Load Balancer Controller 에는 알림이 없었다."},"components":["ingress","cloud-load-balancer"],"root_cause":"upgrade-breaking-change","remediation":[{"text":{"en":"Restarted the AWS Load Balancer Controller","ko":"AWS Load Balancer Controller 를 재시작해 서비스를 되살렸다."}},{"text":{"en":"Rolled back the Kubernetes cluster system update","ko":"재발을 막으려고 시스템 업데이트를 롤백했다."}}],"action_items":[{"text":{"en":"Find the exact cause of the failure so the system update can be deployed safely","ko":"재발을 막고 시스템 업데이트를 안전하게 다시 배포할 수 있도록 실패의 정확한 원인을 밝힌다."}},{"text":{"en":"Add monitoring and alerting on the AWS Load Balancer Controller so on-call engineers learn of a failure quickly and can pause deployments","ko":"AWS Load Balancer Controller 에 모니터링과 알림을 추가해, 실패하면 온콜 엔지니어가 바로 알고 배포를 미리 멈출 수 있게 한다."}}],"contributing":["monitoring-blind-spot","staging-not-representative","delayed-effect-change"],"recurrence_of":null,"symptoms_text":{"en":"Event ingestion and the Honeycomb UI in EU1 became unavailable at 22:00:10 UTC on April 9, 2024, and the status page reported that the EU1 instance was down. Both the ingestion service and the service behind the web UI stopped at roughly the same moment.\n\nThe outage came at the end of an ordinary deployment. Honeycomb deploys by terminating pods and starting new ones one at a time. The new pods were working, but no traffic was forwarded to them; service broke off when the last old pod was terminated.\n\nThe reason was that the AWS Load Balancer Controller, which registers each new pod with the Application Load Balancer (ALB) so the ALB starts sending it traffic, had failed earlier. The routine system update rolled out to the cluster that day made the controller and other pods fail sporadically.","ko":"4월 9일 22:00:10 UTC 에 Honeycomb EU1 의 이벤트 수집과 웹 UI 가 갑자기 멈췄다. 두 서비스가 거의 같은 시각에 끊겼다. 22:08 UTC 에 상태 페이지에 EU1 인스턴스가 다운됐다는 공지가 올라왔다.\n\n멈춘 것은 api.eu1.honeycomb.io 의 EU1 이벤트 수집과 ui.eu1.honeycomb.io 의 앱 화면, 쿼리, 트리거와 SLO 알림이었다.\n\n중단 직전에는 평소처럼 배포가 진행되고 있었다. Honeycomb 은 파드를 하나씩 종료하고 새 파드로 바꾸는 방식으로 배포한다. 새 파드는 정상적으로 동작했지만 트래픽이 새 파드로 전달되지 않았다. 마지막 옛 파드가 종료되는 순간 서비스가 끊겼다."},"updated_at":"2026-11-10T00:00:40.961573Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0203","org_slug":"honeycomb"}