如果您的业务需要快速启动而无需考虑节点资源问题,你可以考虑使用ack-autoscaling-placeholder组件。ack-autoscaling-placeholder为集群的自动扩展提供缓冲区,当节点资源不足时,实际的工作负载会将提前预留的资源抢占,实现快速启动,然后结合使用节点自动伸缩功能,迫使集群进行节点维度的扩展。本文介绍如何使用ack-autoscaling-placeholder实现容器秒级伸缩。
操作流程
前提条件
步骤一:部署ack-autoscaling-placeholder组件并创建占位工作负载
ack-autoscaling-placeholder能够为集群的自动扩展提供一个缓冲区,使得集群的节点能够超量配置,提前预热。保证了工作负载能够快速扩展,无需等待节点创建并加入集群。
登录容器服务管理控制台,在左侧导航栏选择 。
在应用目录页签,搜索ack-autoscaling-placeholder,然后单击ack-autoscaling-placeholder。
在ack-autoscaling-placeholder页面,单击一键部署。
在创建面板,按照提示完成配置,然后单击确定。
将参数配置页签中的参数内容替换为如下YAML示例。
创建成功后,在
页面,可查看到该应用状态为已部署。
步骤二:创建实际负载的PriorityClass
使用以下YAML示例,创建名为
priorityClass.yaml
的文件。apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000000 #配置优先级,比上一步骤占位Pod的默认优先级要高。 globalDefault: false description: "This priority class should be used for XYZ service pods only."
执行以下命令部署实际工作负载的PriorityClass。
kubectl apply -f priorityClass.yaml
预期输出如下:
priorityclass.scheduling.k8s.io/high-priority created
步骤三:创建实际工作负载
使用以下YAML示例,创建名为
workload.yaml
的文件。执行以下命令部署实际的工作负载。
kubectl apply -f workload.yaml
预期输出如下:
deployment.apps/placeholder-test created
结果验证
占位工作负载ack-place-holder创建成功后,Pod状态为running。
实际工作负载部署时,由于配置了高优先级的PriorityClass,会将占位工作负载资源抢占过来实现快速启动,同时占位工作负载的Pod被驱逐,且因为节点资源不足处于Pending状态。
实际工作负载placeholder-test快速部署在占位工作负载所在的节点
占位工作负载被驱逐,且处于Pending状态
由于节点池开启了自动弹性功能,节点资源不足触发了节点扩容,占位工作负载被调度到新弹出来的节点上,状态为runing。
相关文档
高可用场景下,实现多可用区部署的弹性扩容,请参见多可用区同时快速弹性扩容。