文档

配置集群的弹性伸缩

更新时间:

ACK Serverless集群基于阿里云弹性容器实例服务提供了强大的弹性伸缩能力。依照制定的策略,ACK Serverless集群的算力可以在短时间内增长到原先的数倍,或在算力需求回落时快速缩容以节省成本。本文向您介绍如何直接控制集群中的Pod数量或配置基于负载的自动伸缩策略。

重要

完成本教程预计产生3元左右的费用(假设您的资源运行0.5 小时)。请在完成教程后及时释放资源。

前提条件

已参见快速部署基于Nginx的Web应用完成Web应用的部署。

步骤一:安装metrics-server组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 单击上方的日志与监控页签,找到名为metrics-server的卡片,单击右下方的安装,并等待安装完成。

步骤二:实现Pod扩缩容

使用控制台

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态

  3. 单击名称为“nginx-deploy”的无状态应用,进入应用详细信息页面。

  4. 单击右上方的伸缩按钮。在伸缩面板中,将所需容器组数量修改为10,然后单击确定

    页面自动刷新后,可以观察到9个新的Pod被创建,表明Pod扩容成功。

  5. 重复步骤4,将Pod数量修改为1。

    页面自动刷新后,可以观察到Pod数量回落至1个,表明Pod缩容成功。

通过kubectl控制

  1. 执行以下命令,查看应用的详细信息。

    kubectl get deploy

    预期输出:

    NAME           READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deploy   1/1     1            1           9m32s
  2. 执行以下命令,将应用内的Pod扩容到10个。

    kubectl scale deploy nginx-deploy --replicas=10

    预期输出:

    deployment.extensions/nginx-deploy scaled
  3. 执行以下命令,查看Pod。

    kubectl get pod

    预期输出:

    NAME                            READY   STATUS    RESTARTS   AGE
    nginx-deploy-55d8dcf755-8jlz2   1/1     Running   0          39s
    nginx-deploy-55d8dcf755-9jbzk   1/1     Running   0          39s
    nginx-deploy-55d8dcf755-bqhcz   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-bxk8n   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-cn6x9   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-jsqjn   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-lhp8l   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-r2clb   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-rchhq   1/1     Running   0          10m
    nginx-deploy-55d8dcf755-xspnt   1/1     Running   0          38s
  4. 执行以下命令,将应用内的Pod缩容到1个。

    kubectl scale deploy nginx-deploy --replicas=1

    预期输出:

    deployment.extensions/nginx-deploy scaled
  5. 执行以下命令,查看Pod。

    kubectl get pod

    预期输出:

    NAME                            READY   STATUS    RESTARTS   AGE
    nginx-deploy-55d8dcf755-bqhcz   1/1     Running   0          1m

步骤三:配置基于负载的自动伸缩

使用控制台

  1. 容器伸缩页签中,单击指标伸缩(HPA)后的创建按钮。

  2. 创建面板中填入以下示例值,然后单击创建

    配置项

    示例值

    名称

    nginx-deploy

    指标

    监控项:CPU使用量

    阈值:20%

    最大容器数量

    10

    最小容器数量

    1

通过kubectl控制

  1. 执行以下命令,创建一个新的指标伸缩策略。

    执行此策略时,应用中至少有1个Pod,至多有10个Pod,而应用会通过伸缩的方式尽可能将容器的平均CPU占用保持在50%左右。

    kubectl autoscale deployment nginx-deploy --cpu-percent=20 --min=1 --max=10

    预期输出:

    horizontalpodautoscaler.autoscaling/nginx-deploy autoscaled
  2. 执行以下命令,查看指标伸缩策略的信息。

    kubectl get hpa

    预期输出:

    NAME           REFERENCE                 TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    nginx-deploy   Deployment/nginx-deploy   0%/20%    1         10        1          35s

步骤四(可选):测试自动伸缩策略

您可以通过向集群内的容器增加负载以观察自动伸缩策略的表现。请参照以下步骤为容器增加负载。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息

  3. 容器组页签下,在第一个容器组的右方,单击终端 > cpu-usage连接容器。

  4. 在新页面执行以下命令,此命令会使容器运行一个无限循环,使CPU负载提升到最大。

    while : ; do : ; done
  5. 回到控制台,单击容器组页签,然后单击监控列下的图标,观察容器的CPU负载。等待约一分钟后,再次单击该图标并观察情况。

  6. 单击右上方的刷新按钮.png按钮刷新应用信息,页面显示已新创建4个Pod。

    此时,一个Pod的CPU负载达到100%,而其余四个Pod的CPU负载约为0%。而本应用中所有Pod的平均CPU负载达到了约20%,集群扩容完成,进入稳定状态。

  7. 回到步骤3中打开的容器终端页面,输入Ctrl+C结束循环,使得容器CPU负载回到约0%。

    说明

    如果您关闭了之前打开的容器终端页面,您可以使用top命令查看进程,并使用kill -9 <PID>命令结束CPU负载达到100%的进程。

  8. 再次回到控制台,等待5-10分钟后,再次点击刷新按钮.png按钮,观察Pod数量回落至1个。

步骤五:释放资源

如果无需继续使用集群,请按照以下操作释放资源:

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群右方的更多 > 删除

  3. 删除集群面板中,选中以下复选框:同时删除集群下的ALB资源同时删除集群下的PrivateZone资源我已知晓以上信息并确认删除集群,然后单击确定

  • 本页导读 (1)
文档反馈