Руководство. Масштабирование приложений в Служба 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 вручную
Просмотрите модули 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
Вручную измените количество модулей pod в развертывании store-front с помощью
kubectl scale
команды.kubectl scale --replicas=5 deployment.apps/store-front
Убедитесь, что дополнительные модули 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 с помощью файла манифеста
Создайте файл манифеста для определения поведения автомасштабирования и ограничений ресурсов, как показано в следующем сжатом примере файла
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
Примените файл манифеста автомасштабирования с помощью
kubectl apply
команды.kubectl apply -f aks-store-quickstart-hpa.yaml
Проверьте состояние автомасштабирования с помощью
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
После успешного масштабирования кластера выходные данные будут похожи на следующие примеры выходных данных:
"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. Вы научились выполнять следующие задачи:
- Вручную масштабируйте модули pod Kubernetes, которые запускают приложение.
- Настройте модули pod автомасштабирования, которые выполняют интерфейс приложения.
- Вручную масштабируйте узлы Kubernetes.
В следующем руководстве вы узнаете, как обновить Kubernetes в кластере AKS.
Azure Kubernetes Service