{"id":"IL-0139","org":"Google Cloud","date":"2022-09-15","docs":[],"title":{"en":"Pods on GKE clusters with Calico network policy got stuck Terminating or Pending after upgrading to 1.22 or later because of a race condition in the Calico component","ko":"Calico 네트워크 정책을 쓰는 GKE 클러스터를 1.22 이상으로 업그레이드하자 경쟁 조건 때문에 CNI 정리가 Unauthorized 로 실패해 파드가 Terminating 이나 Pending 에 멈췄다."},"domain":["kubernetes","gcp","networking"],"impact":{"scope":"GKE clusters using Calico network policy on all 1.22 and 1.23 versions and on 1.24 before 1.24.4-gke.800; only a small number actually had stuck pods","users":"unknown","region":"Global; the page lists 34 Google Cloud regions, from asia-east1 to us-west4"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"A race in the Calico component can leave pods stuck Terminating, with FailedKillPod and KillPodSandbox errors that point at the network plugin, not at the workload. Restarting the kubelet and calico-node frees the stuck pods but does not remove the race; the fixed GKE version or Google's internal patch does. Clusters that use the cluster autoscaler are more likely to hit it.","ko":"클러스터 오토스케일러를 쓰면 이 경쟁 조건에 걸릴 확률이 높아진다. 수정 버전으로 올리기 전에는 kubelet 과 calico-node 를 재시작해 멈춘 파드를 풀 수 있고, Calico 가 꼭 필요하지 않다면 Calico 네트워크 정책을 끄는 방법도 있다."},"related":[],"sources":[{"url":"https://status.cloud.google.com/incidents/urNR4xD4gBNsyaZj3W1i","kind":"official-status","license":"unknown","archived":null}],"summary":{"en":"A race condition introduced in the Calico component affected GKE 1.22, 1.23 and 1.24 before 1.24.4-gke.800. On clusters with Calico network policy the race left pods stuck Terminating or Pending; when terminating pods, the Calico CNI plugin failed to tear down the pod network with an Unauthorized error on getting ClusterInformation. GKE worked with the Calico project on a fix.\n\nThe fix shipped first in GKE 1.24.4-gke.800 and was then made available in 1.23 and 1.22; clusters on the Rapid, Regular and Stable release channels running 1.22 or 1.23 were to upgrade automatically over the following weeks. Until then, the recommended action was to upgrade manually to 1.24.4-gke.800 or later or to ask Google Cloud Support for an internal patch; restarting the kubelet and calico-node got stuck pods moving, and in the first update disabling Calico network policy was offered for customers without a strong need for Calico. Google Cloud reported the issue resolved for all affected users as of 13:45 US/Pacific on 2022-09-29.","ko":"Google Cloud 는 2022-09-15 16:01 US/Pacific 에 Calico 를 켠 GKE 클러스터를 1.22 이상으로 업그레이드하면 파드가 Terminating 에 멈출 수 있다고 공지했다. 첫 공지는 1.22 이상에서 특정 조건일 때 파드 종료에 문제가 생긴다고만 알렸다. 9월 21일 공지부터는 Pending 으로 멈추는 경우도 포함했고, 원인을 Calico 네트워크 정책을 쓸 때 생기는 경쟁 조건이라고 밝혔다. 문제는 Calico 컴포넌트에서 생겼고, GKE 는 Calico 프로젝트와 함께 수정을 만들었다.\n\n수정은 먼저 1.24.4-gke.800 에 들어갔다. 9월 16일에는 검증이 끝나면 1.22 와 1.23 으로 백포트를 서두르겠다고 했고, 9월 23일에는 1.23 과 1.22 에 수정을 넣은 다음 릴리스가 시작됐다고 알렸다. 그사이 고객에게는 kubelet 과 calico-node 재시작, Calico 네트워크 정책 끄기, Google Cloud 지원팀을 통한 내부 패치, 1.24.4-gke.800 이상으로의 수동 업그레이드를 우회책으로 안내했다. 2022-09-29 13:45 US/Pacific 에 영향받은 모든 사용자에게서 문제가 해결됐다고 발표했다. 공지 페이지는 asia-east1 부터 us-west4 까지 34개 리전을 영향 지역으로 적었다."},"trigger":{"en":"Upgrading a GKE cluster that uses Calico network policy to version 1.22 or later.","ko":"Calico 네트워크 정책을 켠 GKE 클러스터를 1.22 이상 버전으로 업그레이드했다."},"severity":"unknown","symptoms":["pod-stuck-terminating","pod-pending"],"timeline":{"detected_after":null,"resolved_after":"13d 21h 48m"},"date_kind":"incident","detection":null,"components":["calico","kubelet","pod-termination"],"root_cause":"software-bug","remediation":[{"text":{"en":"released a fix in GKE 1.24.4-gke.800 and made it available in 1.23 and 1.22","ko":"1.24.4-gke.800 에 수정을 넣고 1.23 과 1.22 로 백포트했으며, 고객이 수정 버전으로 직접 업그레이드할 수 있게 했다."}},{"text":{"en":"offered an internal patch through Google Cloud Support for affected customers","ko":"영향받는 버전의 고객에게 Google Cloud 지원팀을 통해 내부 패치를 적용받도록 권했다."}},{"text":{"en":"advised customers to restart the kubelet and calico-node to get stuck pods unstuck","ko":"kubelet 과 calico-node 를 재시작해 멈춘 파드를 풀어 주는 우회책을 안내했다."}},{"text":{"en":"advised customers without a strong need for Calico to disable Calico network policy","ko":"Calico 가 꼭 필요하지 않은 고객에게는 Calico 네트워크 정책을 끄는 우회책을 안내했다."}}],"action_items":[{"text":{"en":"Upgrade clusters on the Rapid, Regular and Stable release channels running 1.22 or 1.23 to the fixed version automatically","ko":"1.22 나 1.23 을 쓰는 RAPID, REGULAR, STABLE 릴리스 채널의 클러스터를 앞으로 몇 주에 걸쳐 수정 버전으로 자동 업그레이드한다."}}],"contributing":[],"recurrence_of":null,"symptoms_text":{"en":"After upgrading to GKE 1.22 or later, clusters that use Calico network policy could have pods stuck in Terminating or Pending. Google Cloud posted the incident at 16:01 US/Pacific on 2022-09-15 as pods stuck terminating; from the 2022-09-21 update the description also named pods stuck Pending.\n\nWhen terminating pods, the Calico CNI plugin reports: \"Warning FailedKillPod 36m (x389 over 121m) kubelet error killing pod: failed to \"KillPodSandbox\" for \"af9ab8f9-d6d6-4828-9b8c-a58441dd1f86\" with KillPodSandboxError: \"rpc error: code = Unknown desc = networkPlugin cni failed to teardown pod \"myclient-pod-6474c76996\" network: error getting ClusterInformation: connection is unauthorized: Unauthorized\".\n\nThe affected versions were all 1.22 and all 1.23 GKE versions, and 1.24 versions before 1.24.4-gke.800. Only a small number of GKE clusters actually experienced stuck pods, and use of the cluster autoscaler increased the chance of hitting the race condition.","ko":"GKE 를 1.22 이상으로 업그레이드한 뒤 Calico 네트워크 정책을 쓰는 클러스터에서 파드가 Terminating 이나 Pending 상태에서 빠져나오지 못했다. 실제로 파드가 멈춘 클러스터는 소수였다.\n\n파드를 종료할 때 Calico CNI 플러그인이 다음 오류를 냈다. Warning FailedKillPod 36m (x389 over 121m) kubelet error killing pod: failed to \"KillPodSandbox\" for \"af9ab8f9-d6d6-4828-9b8c-a58441dd1f86\" with KillPodSandboxError: \"rpc error: code = Unknown desc = networkPlugin cni failed to teardown pod \"myclient-pod-6474c76996\" network: error getting ClusterInformation: connection is unauthorized: Unauthorized\" 이 예에서는 121분 동안 같은 실패가 389번 반복됐다.\n\n영향받는 버전은 1.22 의 모든 GKE 버전, 1.23 의 모든 GKE 버전, 1.24.4-gke.800 이전의 1.24 버전이었다. 클러스터 오토스케일러를 쓰면 경쟁 조건에 걸릴 확률이 높아졌다."},"updated_at":"2026-11-10T00:00:35.812104Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0139","org_slug":"google-cloud"}