基于下游api结果自动扩展kubernetes pod

时间:2018-03-27 10:41:02

标签: kubernetes

我已经看到HPA可以根据CPU使用情况进行扩展。这太酷了。

但是,我所拥有的场景是:有状态应用程序(pod中的容器)是基于下游API结果的一对一映射。例如,下游api结果返回最大和预期容量,如{response: 10}。我想看看replicaSet或statefulSet或其他kubernetes控制器可以获取此值并自动将pod缩放到10.不幸的是,pod副本在yaml文件中是硬编码的。

如果我手动操作,我想我可以通过运行启动调度程序来完成。调度程序的工作是观察api并根据下游api结果运行kubectl scale命令。这可能容易出错,我需要维护另一个系统。我想这个逻辑应该属于kubernetes控制器?

我可以问过有人之前做过这些事情,配置它的方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,在该模式下无法使用HPA,但您对如何扩展的概念是正确的。

HPA旨在分析指标并根据这些指标确定需要生成多少个容器。它正在使用缩放规则,并且只能根据其决定结果逐个产生pod。

此外,它使用标准Kubernetes API进行规模容器。

由于HPA的逻辑已经在您的应用程序中,因此您可以使用相同的API来扩展您的pod。顺便说一下,kubectl scale使用相同的方式与群集进行交互。

因此,你可以使用Cronjob,它有一个小应用程序,每5分钟调用你的应用程序的API,并使用适当的部署名称调用kubectl scale来扩展你的应用程序。

但是,请记住,你需要以某种方式控制豆荚的上下降频率,它会使你的应用更稳定。这就是为什么我认为每5分钟不超过一次缩放是可以的,但是每分钟尝试这样做通常不是最好的主意。

当然,您可以创建一个守护进程并使用Deployment运行它,但我认为Cronjob解决方案更容易实现。