(已弃用)扩展 Kubernetes Pods 和 Kubernetes 基础设施

小窍门

有关本教程使用 Azure Kubernetes 服务的更新版本,请参阅 教程:在 Azure Kubernetes 服务(AKS)中缩放应用程序

警告

Azure 容器服务 (ACS) 正在被弃用。 不会向 ACS 添加新特性或功能。 所有 API、门户体验、CLI 命令和文档都标记为已弃用。

2017 年,我们推出了 Azure Kubernetes 服务 (AKS),以简化 Kubernetes 的管理、部署和操作。 如果使用 Kubernetes 业务流程协调程序,请在 2020 年 1 月 31 日前迁移到 AKS。 若要开始,请参阅 迁移到 Azure Kubernetes 服务

有关详细信息,请参阅 Azure.com 上的 Azure 容器服务弃用声明

如果已按照教程作,则 Azure 容器服务中有一个正在运行的 Kubernetes 群集,并部署了 Azure Voting 应用。

在本教程的第 5 部分(共 7 部分)中,你将扩展应用中的 Pod 并尝试 Pod 自动扩展。 此外,还了解如何缩放 Azure VM 代理节点数,以更改群集托管工作负荷的容量。 已完成的任务包括:

  • 手动缩放 Kubernetes 容器组
  • 配置运行应用前端的自动缩放 Pod
  • 缩放 Kubernetes Azure 代理节点

在后续教程中,Azure Vote 应用程序已更新,Log Analytics 配置为监视 Kubernetes 群集。

在您开始之前

在前面的教程中,应用程序已打包到容器映像中,此映像上传到 Azure 容器注册表,并创建了 Kubernetes 群集。 然后,应用程序在 Kubernetes 群集上运行。

如果尚未完成这些步骤,并且想要继续作,请返回到 教程 1 – 创建容器映像

手动缩放容器组

到目前为止,已部署 Azure Vote 前端和 Redis 实例,每个实例都有一个副本。 若要验证,请运行 kubectl get 命令。

在浏览器中访问 https://shell.azure.com 以打开 Cloud Shell。

kubectl get pods

输出:

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

使用命令 kubectl scale 手动更改 azure-vote-front 部署中的 Pod 数。 此示例将数字增加到 5。

kubectl scale --replicas=5 deployment/azure-vote-front

运行 kubectl get pods,验证 Kubernetes 是否正在创建 Pod。 在大约一分钟之后,额外的 Pod 开始运行。

kubectl get pods

输出:

NAME                                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

自动缩放容器组

Kubernetes 支持 水平 Pod 自动缩放 ,以根据 CPU 利用率或其他选择指标调整部署中的 Pod 数。

若要使用自动缩放程序,Pod 必须定义 CPU 请求和限制。 在部署中 azure-vote-front ,前端容器请求 0.25 CPU,限制为 0.5 CPU。 设置如下所示:

resources:
  requests:
     cpu: 250m
  limits:
     cpu: 500m

以下示例使用 kubectl 自动扩缩 命令自动扩缩部署中的 azure-vote-front pod 数。 此处,如果 CPU 使用率超过 50%,则自动缩放程序将 Pod 增加到最多 10 个。

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

若要查看自动缩放程序的状态,请运行以下命令:

kubectl get hpa

输出:

NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m

几分钟后,在 Azure Vote 应用上负载很小的情况下,Pod 副本的数量会自动减少到 3。

扩展代理

如果在上一教程中使用默认命令创建了 Kubernetes 群集,则它具有三个代理节点。 如果在群集上规划了更多或更少的容器工作负荷,可以手动调整代理数。 使用 az acs scale 命令,并使用参数指定代理 --new-agent-count 数。

以下示例将名为 myK8sCluster 的 Kubernetes 群集中的代理节点数增加到 4。 该命令需要几分钟才能完成。

az acs scale --resource-group=myResourceGroup --name=myK8SCluster --new-agent-count 4

命令输出显示值 agentPoolProfiles:count中的代理节点数:

{
  "agentPoolProfiles": [
    {
      "count": 4,
      "dnsPrefix": "myK8SCluster-myK8SCluster-e44f25-k8s-agents",
      "fqdn": "",
      "name": "agentpools",
      "vmSize": "Standard_D2_v2"
    }
  ],
...

后续步骤

在本教程中,你在 Kubernetes 群集中使用了不同的缩放功能。 涵盖的任务包括:

  • 手动缩放 Kubernetes Pod
  • 配置运行应用前端的自动缩放 Pod
  • 缩放 Kubernetes Azure 代理节点

转到下一教程,了解如何在 Kubernetes 中更新应用程序。