다음을 통해 공유


PDB로 인한 제거 오류로 인한 UpgradeFailed 오류 문제 해결

이 문서에서는 AKS(Azure Kubernetes Service) 클러스터를 업그레이드하려고 할 때 발생하는 PDB(Pod 중단 예산)로 인한 제거 오류로 인해 UpgradeFailed 오류를 식별하고 resolve 방법에 대해 설명합니다.

필수 구성 요소

이 문서에는 Azure CLI 버전 2.0.65 이상이 필요합니다. 버전 번호를 찾으려면 를 실행합니다 az --version. Azure CLI를 설치하거나 업그레이드해야 하는 경우 Azure CLI를 설치하는 방법을 참조하세요.

업그레이드 프로세스에 대한 자세한 내용은 AKS(Azure Kubernetes Service) 클러스터 업그레이드의 "AKS 클러스터 업그레이드" 섹션을 참조하세요.

증상

다음 오류 메시지와 함께 AKS 클러스터 업그레이드 작업이 실패합니다.

코드: UpgradeFailed
메시지: Pod <Pod 이름을 제거할 때 노드 <노드 이름을>> 드레이닝하지 못했습니다. 너무 많은 요청 오류로 제거에 실패했습니다. 이는 종종 제한된 PDB(Pod 중단 예산) 정책으로 인해 발생합니다. http://aka.ms/aks/debugdrainfailures를 참조하세요. 원래 오류: Kubernetes API 서버에 대한 API 호출이 실패했습니다.

원인

이 오류는 Pod가 PDB(Pod 중단 예산) 정책으로 보호되는 경우에 발생할 수 있습니다. 이 상황에서 Pod는 배수되는 것을 거부합니다.

이 상황을 테스트하려면 를 실행kubectl get pdb -A한 다음 허용된 중단 값을 검사. 값은 1 이상이어야 합니다. 자세한 내용은 Pod 중단 예산을 사용하여 가용성 계획을 참조하세요.

허용된 중단 값이 0이면 업그레이드 프로세스 중에 노드 드레이닝이 실패합니다.

이 문제를 resolve 다음 솔루션 중 하나를 사용합니다.

해결 방법 1: Pod가 드레이닝되도록 설정

  1. Pod 드레이닝이 가능하도록 PDB를 조정합니다. 일반적으로 허용되는 중단은 또는 Running pods / Replicas 매개 변수에 Min Available / Max unavailable 의해 제어됩니다. PDB 수준에서 매개 변수를 Min Available / Max unavailable 수정하거나 의 Running pods / Replicas 수를 늘려 허용된 중단 값을 1 이상으로 푸시할 수 있습니다.
  2. AKS 클러스터를 이전에 업그레이드하려고 했던 것과 동일한 버전으로 다시 업그레이드해 보세요. 이 프로세스는 조정을 트리거합니다.

해결 방법 2: PDB 백업, 삭제 및 다시 배포

  1. PDB kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yaml의 백업을 수행하고 PDB kubectl delete pdb <pdb-name> -n /<pdb-namespace>를 삭제합니다. 업그레이드가 완료되면 PDB kubectl apply -f pdb_backup.yaml를 다시 배포할 수 있습니다.
  2. AKS 클러스터를 이전에 업그레이드하려고 했던 것과 동일한 버전으로 다시 업그레이드해 보세요. 이 프로세스는 조정을 트리거합니다.

해결 방법 3: 드레이닝할 수 없는 Pod 삭제

  1. 드레이닝할 수 없는 Pod를 삭제합니다.

    참고

    배포 또는 StatefulSet에서 Pod를 만든 경우 ReplicaSet에 의해 제어됩니다. 이 경우 배포 또는 StatefulSet을 삭제해야 할 수 있습니다. 이렇게 하기 전에 백업 kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml을 수행하는 것이 좋습니다.

  2. AKS 클러스터를 이전에 업그레이드하려고 했던 것과 동일한 버전으로 다시 업그레이드해 보세요. 이 프로세스는 조정을 트리거합니다.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.