다음을 통해 공유


대규모 AKS 클러스터를 실행하거나 스케일링할 때 발생하는 일반적인 문제 FAQ

이 문서에서는 AKS(Microsoft Azure Kubernetes Service)에서 대규모 클러스터를 실행하거나 확장할 때 발생할 수 있는 일반적인 문제에 대한 질문과 대답을 제공합니다. 큰 클러스터는 500개 이상의 노드 규모로 실행되는 모든 클러스터입니다.

생성, 강화 또는 업그레이드하는 동안 "할당량 초과" 오류가 발생합니다.

이 문제를 해결하려면 생성, 크기 조정 또는 업그레이드하려는 구독에서 지원 요청을 만들고 해당 리소스 종류에 대한 할당량을 요청합니다. 자세한 내용은 지역 컴퓨팅 할당량을 참조 하세요.

고급 네트워킹을 사용하는 AKS 클러스터를 배포할 때 "insufficientSubnetSize" 오류가 발생합니다.

이 오류는 클러스터에 사용 중인 서브넷에 성공적인 리소스 할당을 위해 CIDR 내에서 더 이상 사용할 수 있는 IP가 없음을 나타냅니다. 이 문제는 업그레이드, 스케일 아웃 또는 노드 풀을 만드는 동안 발생할 수 있습니다. 이 문제는 서브넷의 사용 여유 IP 수가 다음 수식의 결과보다 작기 때문에 발생합니다.

요청된 노드 수 * 노드 풀 --max-pod

필수 조건

  • 400개 이상의 노드를 확장하려면 Azure CNI 네트워킹 플러그 인을 사용해야 합니다.

  • 배포하는 노드 및 Pod 수를 수용하도록 가상 네트워크 및 서브넷을 계획하려면 클러스터에 대한 IP 주소 계획을 참조하세요. IP 고갈로 인해 수행할 서브넷 계획 또는 클러스터 다시 만들기의 오버헤드를 줄이려면 동적 IP 할당을 참조하세요.

솔루션

기존 서브넷의 CIDR 범위를 업데이트할 수 없으므로 이 문제를 해결하기 위해 새 서브넷을 만들 수 있는 권한이 있어야 합니다. 다음 단계를 수행합니다.

  1. 작업 목표에 충분한 더 큰 CIDR 범위가 있는 새 서브넷을 다시 빌드합니다.

  2. 겹치지 않는 새 범위가 있는 새 서브넷을 만듭니다.

  3. 새 서브넷에 새 노드 풀을 만듭니다.

  4. 대체될 이전 서브넷에 있는 이전 노드 풀에서 Pod를 드레이닝합니다.

  5. 이전 서브넷 및 이전 노드 풀을 삭제합니다.

SNAT 포트 고갈로 인해 간헐적인 송신 연결 오류가 발생했습니다.

비교적 큰 규모(500개 이상의 노드)에서 실행되는 클러스터의 경우 확장성을 높이기 위해 AKS NAT(관리형 네트워크 주소 변환) 게이트웨이 를 사용하는 것이 좋습니다. Azure NAT 게이트웨이는 IP 주소당 최대 64,512개의 아웃바운드 UDP 및 TCP 트래픽 흐름과 최대 16개의 IP 주소를 허용합니다.

관리형 NAT 를 사용하지 않는 경우 SNAT(원본 네트워크 주소 변환) 고갈 및 연결 시간 제한 문제 해결을 참조하여 SNAT 포트 고갈 문제를 이해하고 해결합니다.

Azure Portal을 사용하여 노드를 5,000개까지 확장할 수 없습니다.

Azure CLI를 사용하여 다음 단계를 수행하여 최대 5,000개의 노드로 확장합니다.

  1. 다음 명령을 실행하여 클러스터에 최소 노드 풀 수를 만듭니다(최대 노드 풀 노드 제한은 1,000이므로).

    az aks nodepool add --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
    
  2. 노드 풀을 한 번에 하나씩 확장합니다. 이상적으로, 1,000의 연속적인 스케일 업 사이 수면 시간의 5 분을 설정합니다. 다음 명령을 실행합니다.

    az aks nodepool scale --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
    

내 업그레이드가 실행 중이지만 속도가 느립니다.

기본 구성에서 AKS는 다음 작업을 수행하여 업그레이드 중에 급증합니다.

  • 하나의 새 노드를 만듭니다.
  • 노드 풀의 크기를 원하는 노드 수 이상으로 한 노드로 조정합니다.

최대 서지 설정의 경우 한 노드의 기본값은 AKS가 기존 애플리케이션을 드레이닝하고 이전 버전의 노드를 대체하기 전에 새 노드를 하나 만든다는 것을 의미합니다. 이 추가 노드를 사용하면 AKS에서 워크로드 중단을 최소화할 수 있습니다.

노드가 많은 클러스터를 업그레이드하는 경우 기본값 max-surge을 사용하는 경우 전체 클러스터를 업그레이드하는 데 몇 시간이 걸릴 수 있습니다. 노드 풀당 속성을 사용자 지정 max-surge 하여 업그레이드 속도와 업그레이드 중단 간의 절충을 가능하게 할 수 있습니다. 최대 서지 값을 늘리면 업그레이드 프로세스가 더 빨리 완료될 수 있습니다. 그러나 최대 서지 값이 크면 업그레이드 프로세스 중에 중단이 발생할 수도 있습니다.

다음 명령을 실행하여 기존 노드 풀의 최대 서지를 늘리거나 사용자 지정합니다.

az aks nodepool update --resource-group MyResourceGroup --name mynodepool --cluster-name MyManagedCluster --max-surge 5

또한 배포 설정으로 업그레이드 또는 크기 조정 작업의 완료가 지연되는 방법도 고려해야 합니다.

업그레이드가 할당량(5,000개 클러스터) 제한에 도달했습니다.

이 문제를 해결하려면 지역별 vCPU 할당량 증가를 참조 하세요.

시간 제한 오류로 인해 750개 이상의 노드에서 내부 서비스 만들기가 느리거나 실패합니다.

SLB(표준 Load Balancer) 백 엔드 풀 업데이트는 알려진 성능 병목 현상입니다. 대규모로 서비스 및 SLB를 더 빠르게 만들 수 있는 새로운 기능을 개발 중입니다. 이 문제에 대한 피드백을 보내려면 IP 기반 백 엔드 풀을 사용하는 부하 분산 장치에 대한 Azure Kubernetes 지원을 참조하세요.

솔루션

클러스터를 750개 미만의 노드로 축소한 다음 클러스터에 대한 내부 부하 분산 장치를 만드는 것이 좋습니다. 내부 부하 분산 장치를 만들려면 다음 예제 절차에 따라 서비스 유형 및 azure-load-balancer-internal 주석을 만듭니 LoadBalancer 다.

1단계: 내부 부하 분산 장치 만들기

내부 부하 분산 장치를 만들려면 다음 예제와 같이 internal-lb.yaml이라는 서비스 매니페스트를 만들고 서비스 유형 및 azure-load-balancer-internal 주석을 포함합니다LoadBalancer.

apiVersion: v1
kind: Service
metadata:
  name: internal-app
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: internal-app

2단계: 내부 부하 분산 장치 배포

다음 예제와 같이 명령을 사용하여 kubectl apply 내부 부하 분산 장치를 배포하고 YAML 매니페스트의 이름을 지정합니다.

kubectl apply -f internal-lb.yaml

클러스터를 만든 후에는 내부 부하 분산 장치를 프로비전하고(이 절차에 따라) 내부 부하 분산 서비스를 계속 실행할 수 있습니다. 이렇게 하면 부하 분산 장치에 대규모로 더 많은 서비스를 추가할 수 있습니다.

대규모 SLB 서비스 만들기를 실행하는 데 몇 시간이 걸립니다.

SLB 백 엔드 풀 업데이트는 알려진 성능 병목 현상입니다. 만들기, 업데이트 및 삭제 작업을 위해 훨씬 더 빠른 성능으로 부하 분산 서비스를 대규모로 실행할 수 있는 새로운 기능을 개발 중입니다. 피드백을 보내려면 IP 기반 백 엔드 풀을 사용하는 부하 분산 장치에 대한 Azure Kubernetes 지원을 참조하세요.

타사 정보 고지 사항

이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.

도움을 요청하십시오.

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