IL-0501 2i2c · 2022-08-30kubernetesazurenetworking
Azure 가 배포한 Ubuntu 18.04 업데이트로 UToronto AKS 클러스터의 모든 노드에서 네트워크가 끊겨 허브에 접속할 수 없었다
Microsoft Azure 는 2022년 8월 30일 모든 Ubuntu 18.04 노드에 Ubuntu 업데이트를 배포했다. 이런 업데이트는 보통 자동으로 수백 번 적용돼도 아무도 알아채지 못하지만, 이번에는 Launchpad 의 systemd 버그 1988119 가 드러났다. Azure 공지에 따르면 systemd 237-3ubuntu10.54 로 올라간 VM 에서 DNS 오류가 났고, 2i2c 는 이것을 재부팅만 하면 고쳐지는 DHCP 버그로 기록했다. UToronto AKS 클러스터의 기존 노드 전부에서 네트워크가 끊겨 허브 전체가 내려갔다.
태평양 시간 오전 11:15 에 접속 불가 신고가 들어왔고, 오전 11:25 에 고객 쪽 담당자가 Azure 공지를 Freshdesk 티켓으로 전해 주었다. 오전 11:41 에 모든 노드가 NotReady 인 것을 봤고, 노드 이미지 버전 라벨을 보고 공지와 관련이 있을 가능성이 크다고 판단했다. 노드가 Azure Portal 에 보이지 않아 직접 재부팅할 수 없었다. 마침 클러스터 업그레이드를 해야 하던 참이었다. 업그레이드는 기존 노드를 내리고 새 노드로 바꾸므로, 오전 11:53 에 쿠버네티스 버전과 노드 버전 업그레이드를 시작했다. 오후 12:14 에 업그레이드가 끝나 새 노드가 옛 노드를 대신했고 허브가 돌아왔다. 영향 시간은 58분이었다.
- 심각도
- –
- 영향 범위
- UToronto JupyterHub (jupyter.utoronto.ca) was unreachable; all nodes of its Kubernetes cluster were NotReady
- 영향 사용자
- all UToronto JupyterHub users
- 지역
- –
- 감지까지
- –
- 복구까지
- 58m
증상
jupyter.utoronto.ca 가 응답하지 않았고 사용자는 UToronto JupyterHub 에 아예 접속하지 못했다. 신고는 Freshdesk 티켓으로 들어왔다.
kubectl get node 를 보니 클러스터의 노드 다섯 대가 모두 NotReady 였다. 출력은 aks-core-34239724-vmss000000 NotReady agent 273d v1.20.7 같은 줄이었다.
NotReady 노드 하나를 kubectl get node -o yaml <node-name> 으로 보니 kubernetes.azure.com/node-image-version 라벨이 Microsoft 공지에 나온 영향받는 Ubuntu 버전을 가리켰다. 공지는 systemd 237-3ubuntu10.54 로 올라간 Ubuntu 18.04 VM 에서 DNS 오류가 난다고 했다.
공지가 제시한 우회책은 VM 을 재부팅해 DHCP 임대와 DNS 리졸버를 새로 받는 것이었지만, 노드가 Azure Portal 의 VM 페이지에 보이지 않았다. 쿠버네티스 노드에 SSH 로 들어가는 방법도 문서로 정리돼 있지 않았다.
원인
- 촉발
- Microsoft Azure 가 모든 Ubuntu 18.04 노드에 Ubuntu 업데이트를 자동으로 배포했고, 이 업데이트가 systemd 버그 1988119 를 드러내 노드의 네트워크를 끊었다.
감지
Freshdesk 티켓으로 jupyter.utoronto.ca 가 응답하지 않는다는 신고가 들어왔다.
조치
- 노드를 Azure Portal 의 VM 페이지에서 찾을 수 없어서, 재부팅 대신 클러스터의 쿠버네티스 버전과 노드 버전 업그레이드를 시작했다. 업그레이드가 옛 노드를 모두 내리고 새 노드로 바꾸면서 허브가 돌아왔다.
후속 조치
- 쿠버네티스 노드에 SSH 로 들어가는 방법을 문서로 남긴다.
- Azure 공지를 알림으로 받아 볼 방법을 찾는다.
교훈
원인을 찾고 나서는 바로 복구할 수 있었다. 쿠버네티스 클러스터의 노드에 SSH 로 들어가는 방법이 문서로 없었다. 2i2c 는 클러스터 업그레이드를 아직 하지 않아 그 선택지가 남아 있었던 것과, 고객 쪽 담당자가 Azure 공지를 보고 알려 준 것이 운이 좋았다고 적었다.
출처
- https://github.com/2i2c-org/incident-reports/blob/main/reports/2022-08-30-utoronto-inaccessible.pdf · github
참고 문서
관련 사례
IL-0120클라우드 GPU 서버의 정기 OS 업데이트가 systemd-networkd 를 재시작해 자체 네트워크 에이전트와 충돌했고, 많은 GPU 노드의 라우트가 모두 지워져 ChatGPT 와 API 의 오류율이 크게 올랐다.OpenAI · 2025같은 원인 · 공통 노드 운영체제 이미지
IL-0079GKE 노드가 새 ubuntu_containerd 이미지로 자동 업그레이드된 뒤 커널에서 kube-proxy 가 쓰는 iptables 확장이 빠져, 여러 GKE 클러스터의 인그레스 트래픽이 완전히 끊겼다.Altinity · 2025같은 원인 · 공통 노드 운영체제 이미지
IL-0404Karpenter 가 운영 EKS 노드를 Bottlerocket v1.26.0 으로 바꾼 뒤 BSEE SaaS 고객 인스턴스의 파드가 모두 crash loop back off 에 빠졌다PortSwigger · 2024같은 원인 · 공통 노드 운영체제 이미지
IL-0198systemd 보안 패치가 Ubuntu 22.04 노드의 systemd-networkd 를 재시작해 Cilium 이 넣은 IP 규칙을 지웠고, 여러 리전과 세 클라우드의 Kubernetes 노드가 한꺼번에 네트워크를 잃었다.Datadog · 2023같은 원인 · 공통 노드 운영체제 이미지
IL-0144Ubuntu 18.04 의 systemd 보안 업데이트가 DNS 설정을 날려 AKS 노드의 kubelet 이 레지스트리 이름을 해석하지 못하고 파드가 ImagePullBackoff 에 빠졌다.Microsoft Azure · 2022같은 원인 · 공통 노드 운영체제 이미지
같은 원인 · 공통 노드 운영체제 이미지
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0501
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0501/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.