자습서: AKS(Azure Kubernetes Service)에서 애플리케이션 크기 조정

이전 자습서를 따른 경우 작업 중인 Kubernetes 클러스터가 있고 샘플 Azure Voting 앱을 배포했습니다. 7개 중 5단계인 이 자습서에서는 앱의 Pod를 스케일 아웃하고 Pod 자동 크기 조정을 시도합니다. Azure VM 노드 수를 조정하여 워크로드 호스팅을 위한 클러스터 용량을 변경하는 방법도 알아봅니다. 다음 방법을 알아봅니다.

  • Kubernetes 노드의 크기를 조정합니다.
  • 애플리케이션을 실행하는 Kubernetes Pod의 크기를 수동으로 조정합니다.
  • 앱 프런트 엔드를 실행하는 자동 크기 조정 Pod를 구성합니다.

예정된 자습서에서는 Azure Vote 애플리케이션을 새 버전으로 업데이트합니다.

시작하기 전에

이전 자습서에서는 애플리케이션을 컨테이너 이미지로 패키지하고, 이미지를 Azure Container Registry 업로드하고, AKS 클러스터를 만들고, 애플리케이션을 AKS 클러스터에 배포했습니다.

이러한 단계를 완료하지 않았고 이 자습서와 함께 수행하려는 경우 첫 번째 자습서인 AKS용 애플리케이션 준비로 시작합니다.

이 자습서에는 Azure CLI 버전 2.0.53 이상이 필요합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

수동으로 Pod 크기 조정

이전 자습서에서 Azure Vote 프런트 엔드 및 Redis instance 배포한 경우 단일 복제본(replica) 생성되었습니다.

  1. 명령을 사용하여 kubectl get 클러스터의 Pod 수와 상태를 확인합니다.

    kubectl get pods
    

    다음 예제 출력은 프런트 엔드 Pod 1개와 백 엔드 Pod 1개를 보여줍니다.

    NAME                               READY     STATUS    RESTARTS   AGE
    azure-vote-back-2549686872-4d2r5   1/1       Running   0          31m
    azure-vote-front-848767080-tf34m   1/1       Running   0          31m
    
  2. 명령을 사용하여 kubectl scaleazure-vote-front 배포의 Pod 수를 수동으로 변경합니다. 다음 예제 명령은 프런트 엔드 Pod 수를 5개로 늘입니다.

    kubectl scale --replicas=5 deployment/azure-vote-front
    
  3. 명령을 사용하여 추가 Pod가 생성되었는지 확인합니다 kubectl get pods .

    kubectl get pods
    
                                        READY     STATUS    RESTARTS   AGE
    azure-vote-back-2606967446-nmpcf    1/1       Running   0          15m
    azure-vote-front-3309479140-2hfh0   1/1       Running   0          3m
    azure-vote-front-3309479140-bzt05   1/1       Running   0          3m
    azure-vote-front-3309479140-fvcvm   1/1       Running   0          3m
    azure-vote-front-3309479140-hrbf2   1/1       Running   0          15m
    azure-vote-front-3309479140-qphz8   1/1       Running   0          3m
    

Pod 자동 크기 조정

Kubernetes는 수평 Pod 자동 크기 조정을 지원하여 CPU 사용률 또는 다른 선택 메트릭에 따라 배포에서 Pod 수를 조정할 수 있게 해줍니다. 메트릭 서버는 버전 1.10 이상의 AKS 클러스터에 자동으로 배포되며 Kubernetes에 리소스 사용률을 제공합니다.

  • 명령을 사용하여 az aks show AKS 클러스터의 버전을 확인합니다.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
    

참고

AKS 클러스터가 1.10보다 낮은 버전에 있는 경우 메트릭 서버가 자동으로 설치되지 않습니다. 메트릭 서버 설치 매니페스트는 메트릭 서버 릴리스에서 자산으로 components.yaml 사용할 수 있습니다. 즉, URL을 통해 설치할 수 있습니다. 이러한 YAML 정의에 대해 자세히 알아보려면 추가 정보의 배포 섹션을 참조하세요.

설치 예:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

자동 크기 조정기를 사용하려면 모든 컨테이너 및 Pod에 정의된 CPU 요청 및 제한이 있어야 합니다. 배포에서 azure-vote-front프런트 엔드 컨테이너는 CPU 제한이 0.5인 0.25 CPU를 요청합니다.

이러한 리소스 요청 및 제한은 다음 압축된 YAML 예제와 같이 각 컨테이너에 대해 정의됩니다.

  containers:
  - name: azure-vote-front
    image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: 250m
      limits:
        cpu: 500m

를 사용하여 Pod 자동 크기 조정 kubectl autoscale

  • 명령을 사용하여 Pod 자동 크기 조정 kubectl autoscale 다음 명령은 다음 조건으로 azure-vote-front 배포의 Pod 수를 자동 크기 조정합니다. 모든 Pod의 평균 CPU 사용률이 요청된 사용량의 50%를 초과하는 경우 자동 크기 조정기는 Pod를 최대 10개의 인스턴스 및 배포에 대해 최소 3개의 인스턴스까지 증가합니다.

    kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
    

매니페스트 파일을 사용하여 Pod 자동 크기 조정

  1. 다음 예제 매니페스트 파일에 표시된 것처럼 자동 크기 조정기 동작 및 리소스 제한을 정의하는 매니페스트 파일을 azure-vote-hpa.yaml만듭니다.

    참고

    를 사용하는 apiVersion: autoscaling/v2경우 사용자 지정 메트릭을 포함하여 자동 크기 조정 시 더 많은 메트릭을 도입할 수 있습니다. 자세한 내용은 를 사용하여 v2 여러 메트릭 및 사용자 지정 메트릭 자동 크기 조정을 HorizontalPodAutoscaler참조하세요.

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: azure-vote-back-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: azure-vote-back
      targetCPUUtilizationPercentage: 50 # target CPU utilization
    
    ---
    
    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: azure-vote-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: azure-vote-front
      targetCPUUtilizationPercentage: 50 # target CPU utilization
    
  2. 명령을 사용하여 자동 크기 조정기 매니페스트 파일을 적용합니다 kubectl apply .

    kubectl apply -f azure-vote-hpa.yaml
    
  3. 명령을 사용하여 자동 크기 조정기의 상태 확인합니다kubectl get hpa.

    kubectl get hpa
    
    # Example output
    NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
    azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m
    

    몇 분 후 Azure Vote 앱에서 부하를 최소화하면 Pod 복제본 수가 3개로 줄어듭니다. kubectl get pods 명령을 다시 사용하여 불필요한 Pod를 제거할 수 있습니다.

수동으로 AKS 노드 크기 조정

이전 자습서의 명령을 사용하여 Kubernetes 클러스터를 만든 경우 클러스터에는 두 개의 노드가 있습니다. 이 양을 늘리거나 줄이려면 노드 수를 수동으로 조정할 수 있습니다.

다음 예제에서는 myAKSCluster라는 Kubernetes 클러스터의 노드 수를 3개로 늘립니다. 이 명령은 완료되는 데 2~3분이 걸립니다.

  • 명령을 사용하여 클러스터 노드 크기를 조정합니다 az aks scale .

    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
    

    클러스터가 성공적으로 스케일링되면 출력은 다음 예제 출력과 유사합니다.

    "agentPoolProfiles": [
      {
        "count": 3,
        "dnsPrefix": null,
        "fqdn": null,
        "name": "myAKSCluster",
        "osDiskSizeGb": null,
        "osType": "Linux",
        "ports": null,
        "storageProfile": "ManagedDisks",
        "vmSize": "Standard_D2_v2",
        "vnetSubnetId": null
      }
    

다음 단계

이 자습서에서는 Kubernetes 클러스터의 다양한 크기 조정 기능을 사용했습니다. 구체적으로 다음 작업 방법을 알아보았습니다.

  • 애플리케이션을 실행하는 Kubernetes Pod의 크기를 수동으로 조정합니다.
  • 앱 프런트 엔드를 실행하는 자동 크기 조정 Pod를 구성합니다.
  • Kubernetes 노드의 크기를 수동으로 조정합니다.

다음 자습서에서는 Kubernetes에서 애플리케이션을 업데이트하는 방법을 알아봅니다.