教程 - 在 Azure Kubernetes 服务 (AKS) 中缩放应用程序
如果遵循了前面的教程,则你已拥有一个正常运行的 Kubernetes 群集和 Azure Store Front 应用。
在本教程的第 6 部分(共 7 部分)中,你将横向扩展应用中的 Pod,尝试 Pod 自动缩放,并缩放 Azure VM 节点的数量,以更改群集用于承载工作负荷的容量。 学习如何:
- 缩放 Kubernetes 节点。
- 手动缩放运行你的应用程序的 Kubernetes Pod。
- 配置运行应用前端的自动缩放 Pod。
开始之前
在前面的教程中,你已将应用程序打包到容器映像中,将映像上传到Azure 容器注册表,创建了 AKS 群集,部署了应用程序,并且使用了 Azure 服务总线重新部署已更新的应用程序。 如果你尚未完成这些步骤且想要继续学习,请从教程 1:为 AKS 准备应用程序开始。
本教程需要 Azure CLI 版本 2.34.1 或更高版本。 运行 az --version
即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
手动缩放 Pod
使用
kubectl get
命令查看群集中的 Pod。kubectl get pods
以下示例输出显示了运行 Azure Store Front 应用的 Pod:
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
使用
kubectl scale
命令手动更改 store-front 部署中的 Pod 数量。kubectl scale --replicas=5 deployment.apps/store-front
使用
kubectl get pods
命令验证是否已创建其他 Pod。kubectl get pods
以下示例输出显示了运行 Azure Store Front 应用的其他 Pod:
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 自动缩放程序,所有容器都必须定义 CPU 请求和限制,并且 pod 必须具有指定的请求。 在 aks-store-quickstart
部署中,前端容器请求 1m 的 CPU,而限制是 1000m 的 CPU。
这些资源请求和限制是为每个容器定义的,如以下浓缩的示例 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/v1 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: 50 # target CPU utilization
使用
kubectl apply
命令应用自动缩放程序清单文件。kubectl apply -f aks-store-quickstart-hpa.yaml
使用
kubectl get hpa
命令检查自动缩放程序的状态。kubectl get hpa
几分钟之后,Azure Store Front 应用上的负荷最低,Pod 副本数会减少到三个。 也可再次使用
kubectl get pods
来查看不需要的 Pod 是否已删除。
注意
可以在群集中启用 Kubernetes-based Event-Driven Autoscaler (KEDA) AKS 加载项,以根据需处理的事件数量来驱动缩放。 有关详细信息,请参阅使用 Kubernetes Event-driven Autoscaling (KEDA) 加载项(预览版)实现简化的应用程序自动缩放。
手动缩放 AKS 节点
如果使用前面教程中的命令创建了 Kubernetes 群集,则你的群集具有两个节点。 如果要增加或减少此数量,可以手动调整节点数。
下面的示例将名为 myAKSCluster 的 Kubernetes 群集中的节点数增加到 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, "vmSize": "Standard_D2_v2", "vnetSubnetId": null }
还可以自动缩放群集中的节点。 有关详细信息,请参阅将群集自动缩放程序与节点池配合使用。
后续步骤
在本教程中,在 Kubernetes 群集中使用了不同的缩放功能。 你已了解如何:
- 手动缩放运行你的应用程序的 Kubernetes Pod。
- 配置运行应用前端的自动缩放 Pod。
- 手动缩放 Kubernetes 节点。
下一教程介绍如何在 AKS 群集中升级 Kubernetes。