Поделиться через


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

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

В этом руководстве вы увеличиваете количество 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. Посмотрите pods в вашем кластере используя команду kubectl get.

    kubectl get pods
    

    В следующем примере вывода данных показаны поды, запущенные приложением 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. Вручную измените количество pods в развертывании store-front с помощью команды kubectl scale.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  3. Убедитесь, что дополнительные pods были созданы с помощью команды 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
    

Автоматическое масштабирование подов

Для использования горизонтального автомасштабирования подов все контейнеры должны иметь определенные запросы на центральный процессор и ограничения, а поды должны иметь указанные запросы. 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.

Примечание.

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

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

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

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

  • Масштабирование узлов кластера с помощью az aks scale команды.

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

    После успешного масштабирования кластера выходные данные будут похожи на следующие примеры выходных данных:

    "aadProfile": null,
    "addonProfiles": null,
    "agentPoolProfiles": [
      {
        ...
        "count": 3,
        "mode": "System",
        "name": "nodepool1",
        "osDiskSizeGb": 128,
        "osDiskType": "Managed",
        "osType": "Linux",
        "ports": null,
        "vmSize": "Standard_DS2_v2",
        "vnetSubnetId": null
        ...
      }
      ...
    ]
    

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

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

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

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

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