IL-0144 Microsoft Azure · 2022-08-30kubernetesazurenetworking
2022년 8월 30일 06:00 UTC 에 Canonical 이 Ubuntu 보안 업데이트를 공개했다. Unattended-Upgrades 를 켠 Azure 의 Ubuntu 18.04 VM 들은 systemd 237-3ubuntu10.54 를 포함한 새 패키지를 자동으로 내려받아 설치했고, 경쟁 상태 버그 때문에 DNS 설정을 잃었다. 버그는 이번 업데이트와 이전 업데이트가 겹쳐서 드러났고, 네트워크 설정에서 드라이버 이름으로 NIC 를 찾는 시스템에서만 생긴다. 그래서 다른 주요 클라우드가 아니라 Azure 에서만 문제가 됐다.
AKS 노드도 이런 VM 이어서 kubelet 이 컨테이너 레지스트리 이름을 해석하지 못했고 파드가 이미지를 받지 못했다. Azure Monitor, Application Insights, Log Analytics, Microsoft Sentinel 도 같은 DNS 문제로 영향을 받았다. Unattended-Upgrades 는 기본적으로 하루에 한 번 보안 업데이트를 받아 적용한다. 보안 업데이트는 중요도 때문에 Microsoft 의 안전 배포 절차를 거치지 않는다.
AKS 와 Azure Container Apps 팀을 포함한 여러 팀이 패키지 공개 직후 운영 알림으로 문제를 알았다. 이 팀들은 Canonical 과 함께 완화에 나섰고, 영향받은 VM 에는 재부팅이나 수정 스크립트를 권했다. AKS 팀은 자동 탐지와 복구 장치를 만들어 모든 리전에 배포했고 이것으로 대부분의 고객이 복구됐다. 나머지 고객은 지원팀을 거쳐 손으로 완화해야 했다. 영향은 8월 31일 16:00 UTC 까지 이어졌다.
2022년 8월 30일 06:00 UTC 무렵부터 Ubuntu Unattended-Upgrades 를 켜 둔 Ubuntu 18.04 VM 에서 DNS 이름 해석 오류가 나기 시작했다. AKS 에서는 kubelet 이 컨테이너 레지스트리의 DNS 이름을 해석하지 못해 ImagePullBackoff 같은 파드 생성 오류가 났다.
VM 은 DNS 해석 실패와 함께 네트워크 연결 문제를 겪었다. 이 VM 위에서 도는 Azure Monitor, Application Insights, Log Analytics, Microsoft Sentinel 도 영향을 받아, 고객은 로그 데이터에 접근하지 못하거나 Log Search 알림과 Microsoft Sentinel 알림이 빠지거나 늦게 오는 일을 겪었을 수 있다.
문제는 Ubuntu 18.04 에만 있었지만 퍼블릭 클라우드와 소버린 클라우드를 포함한 모든 Azure 리전에서 나타났다. 들어온 고객 지원 문의를 봐도 영향은 이 Ubuntu 버전에 한정됐다.
원인 ? 업그레이드로 깨진 호환성
패키지가 공개된 직후 AKS 와 Azure Container Apps 팀을 포함한 여러 Azure 팀이 운영 알림으로 문제를 알았다. 이어 들어온 고객 지원 문의로 영향이 Ubuntu 18.04 에 한정된다는 것을 확인했다.
보안 업데이트는 중요도 때문에 안전 배포 절차를 거치지 않았고, 하루 한 번 자동으로 적용되는 업데이트가 모든 리전의 VM 에 퍼졌다. AKS 고객은 자동 노드 이미지 업그레이드를 쓰면 노드를 최신으로 유지하면서 Microsoft 의 공급망만 쓰게 된다. IaaS VM 은 자동 VM 게스트 패치를 쓰면 Ubuntu 패치를 받는 VM 의 범위가 제한되고 업데이트가 조율된 순서로 적용된다. 자동 VM 게스트 패치는 상태 감시도 하며, 사용자는 앱 상태 확장으로 애플리케이션 상태 신호를 줄 수 있다.
같은 원인 · 공통 클라이언트 쪽 DNS 리졸버와 캐시
같은 원인 · 공통 노드 운영체제 이미지
같은 원인 · 공통 노드 운영체제 이미지
같은 원인 · 공통 노드 운영체제 이미지