이 문서에서는 AKS(Azure Kubernetes Service) 클러스터를 업그레이드하려고 할 때 발생할 수 있는 "불만족할 수 없는PDB" 오류를 식별하고 해결하는 방법을 설명합니다.
필수 조건
이 문서에는 Azure CLI 버전 2.53.0 이상이 필요합니다. 설치되어 있는 버전을 확인하려면 az --version
을 실행합니다. Azure CLI를 설치하거나 업그레이드해야 하는 경우 Azure CLI 설치 방법을 참조하세요.
증상
다음 오류 메시지와 함께 AKS 클러스터 업그레이드 작업이 실패합니다.
코드: 불만족PDB
메시지: 1 오류가 발생했습니다.
* PDB <pdb-namespace>/<pdb-name> 에는 maxunavailble == 0이(가) put 작업을 진행할 수 없습니다.
원인
업그레이드 작업을 시작하기 전에 AKS는 매개 변수가 0으로 설정된 기존 PDB(Pod 중단 예산) maxUnavailable
에 대해 클러스터를 확인합니다. 이러한 PDB는 노드 드레이닝 작업을 차단할 가능성이 높습니다. 노드 드레이닝 작업이 차단되면 클러스터 업그레이드 작업이 성공적으로 완료되지 않습니다. 이로 인해 클러스터가 실패할 수 있습니다.
"UnsatisfiablePDB" 오류가 수신되면 다음 명령을 실행하여 PDB의 상태를 확인할 수 있습니다.
$ kubectl get pdb <pdb-name> -n <pdb-namespace>
이 명령의 출력은 다음 명령과 유사해야 합니다.
NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE
<pdb-name> N/A 0 0 49s
값 MAX UNAVAILABLE
이 0이면 업그레이드 프로세스 중에 노드 드레이닝이 실패합니다.
이 문제를 해결하려면 다음 솔루션 중 하나를 사용합니다.
해결 방법 1: PDB의 "maxUnavailable" 매개 변수 조정
참고 항목
PDB 리소스를 직접 편집할 수 있는 경우 이 솔루션을 사용합니다.
- PDB의
maxUnavailable
매개 변수를1
값 이상으로 설정합니다. 자세한 내용은 PodDisruptionBudget 지정을 참조 하세요. - AKS 클러스터 업그레이드 작업을 다시 시도합니다.
해결 방법 2: PDB 백업, 삭제 및 다시 배포
참고 항목
PDB 리소스를 직접 편집할 수 없는 경우 이 솔루션을 사용합니다.
다음 명령을 사용하여 PDB를 백업합니다.
$ kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yaml
다음 명령을 사용하여 PDB를 삭제합니다.
$ kubectl delete pdb <pdb-name> -n <pdb-namespace>
AKS 클러스터 업그레이드 작업을 다시 시도합니다.
AKS 클러스터 업그레이드 작업이 성공하면 다음 명령을 사용하여 PDB를 다시 배포합니다.
$ kubectl apply -f pdb_backup.yaml
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.