Руководство. Масштабирование приложений в Служба Azure Kubernetes (AKS)

Если вы выполнили предыдущие учебники, у вас есть рабочий кластер Kubernetes и приложение Azure Store Front.

В этом руководстве, часть 6 из семи, вы масштабируете модули pod в приложении, попробуйте автомасштабирование pod и масштабируйте количество узлов виртуальных машин Azure, чтобы изменить емкость кластера для размещения рабочих нагрузок. Узнайте следующие темы:

  • Масштабирование узлов Kubernetes.
  • Вручную масштабируйте модули pod Kubernetes, которые запускают приложение.
  • Настройте модули pod автомасштабирования, которые выполняют интерфейс приложения.

Подготовка к работе

В предыдущих руководствах вы упаковали приложение в образ контейнера, отправили образ в Реестр контейнеров Azure, создали кластер AKS, развернули приложение и использовали Служебная шина Azure для повторного развертывания обновленного приложения. Если вы не выполнили эти действия и хотите следовать вместе, начните с руководства 1. Подготовка приложения для AKS.

Для этого руководства требуется Azure CLI версии 2.34.1 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Масштабирование pod вручную

  1. Просмотрите модули pod в кластере kubectl get с помощью команды.

    kubectl get pods
    

    В следующем примере выходных данных показаны модули pod под управлением приложения Azure Store Front:

    NAME                               READY     STATUS     RESTARTS   AGE
    order-service-848767080-tf34m      1/1       Running    0          31m
    product-service-4019737227-2q2qz   1/1       Running    0          31m
    store-front-2606967446-2q2qz       1/1       Running    0          31m
    
  2. Вручную измените количество модулей pod в развертывании store-front с помощью kubectl scale команды.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  3. Убедитесь, что дополнительные модули pod были созданы с помощью kubectl get pods команды.

    kubectl get pods
    

    В следующем примере выходных данных показаны дополнительные модули pod, работающие в приложении Azure Store Front:

                                      READY     STATUS    RESTARTS   AGE
    store-front-2606967446-2q2qzc     1/1       Running   0          15m
    store-front-3309479140-2hfh0      1/1       Running   0          3m
    store-front-3309479140-bzt05      1/1       Running   0          3m
    store-front-3309479140-fvcvm      1/1       Running   0          3m
    store-front-3309479140-hrbf2      1/1       Running   0          15m
    store-front-3309479140-qphz8      1/1       Running   0          3m
    

Автомасштабирование pod

Для использования горизонтального автомасштабирования pod все контейнеры должны иметь определенные запросы ЦП и ограничения, а модули pod должны иметь указанные запросы. aks-store-quickstart В развертывании интерфейсный контейнер запрашивает 1 млн ЦП с ограничением в 1000 млн ЦП.

Эти запросы и ограничения ресурсов определяются для каждого контейнера, как показано в следующем сжатом примере YAML:

...
  containers:
  - name: store-front
    image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
    ports:
    - containerPort: 8080
      name: store-front
...
    resources:
      requests:
        cpu: 1m
...
      limits:
        cpu: 1000m
...

Автомасштабирование модулей pod с помощью файла манифеста

  1. Создайте файл манифеста для определения поведения автомасштабирования и ограничений ресурсов, как показано в следующем сжатом примере файла aks-store-quickstart-hpa.yamlманифеста:

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-front
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
    
  2. Примените файл манифеста автомасштабирования с помощью kubectl apply команды.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Проверьте состояние автомасштабирования с помощью kubectl get hpa команды.

    kubectl get hpa
    

    Через несколько минут с минимальной нагрузкой на приложение Azure Store Front количество реплика pod уменьшается до трех. Вы можете использовать команду kubectl get pods еще раз, чтобы увидеть ненужные модули pod, которые были удалены.

Примечание.

Вы можете включить надстройку AKS на основе событий на основе Kubernetes (KEDA) AKS для масштабирования на основе количества событий, необходимых для обработки. Дополнительные сведения см. в разделе "Включение упрощенного автомасштабирования приложений" с помощью надстройки Kubernetes Autoscaling (KEDA) (предварительная версия).

Масштабирование узлов AKS вручную

Если вы создали кластер Kubernetes с помощью команд в предыдущих руководствах, кластер имеет два узла. Если вы хотите увеличить или уменьшить эту сумму, можно вручную настроить количество узлов.

В следующем примере в кластере Kubernetes myAKSCluster число узлов увеличивается до трех. Для выполнения этой команды требуется несколько минут.

  • Масштабирование узлов кластера с помощью 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,
        "vmSize": "Standard_D2_v2",
        "vnetSubnetId": null
      }
    

Вы также можете автомасштабирование узлов в кластере. Дополнительные сведения см. в разделе "Использование автомасштабирования кластера" с пулами узлов.

Следующие шаги

В этом руководстве вы использовали различные возможности масштабирования кластера Kubernetes. Вы научились выполнять следующие задачи:

  • Вручную масштабируйте модули pod Kubernetes, которые запускают приложение.
  • Настройте модули pod автомасштабирования, которые выполняют интерфейс приложения.
  • Вручную масштабируйте узлы Kubernetes.

В следующем руководстве вы узнаете, как обновить Kubernetes в кластере AKS.