Kubernetes 通过基于时间的触发器扩展 pod

Posted

技术标签:

【中文标题】Kubernetes 通过基于时间的触发器扩展 pod【英文标题】:Kubernetes Scaling up pods by time based trigger 【发布时间】:2019-02-15 03:26:14 【问题描述】:

我有一个在 Kubernetes 上运行的服务器来处理每小时的处理作业。考虑使用服务来公开 pod,并使用(外部)cron 作业来访问负载均衡器,以便 kubernetes 可以根据需要自动扩展以处理更高的负载。但是在实现中,如果 cron 作业同时发送 100 个请求,而只有 1 个 pod,则所有流量都将流向该 pod,而随后启动的 pod 仍然没有任何流量需要处理。

我该如何解决这个问题?在发出请求之前,我是否可以先使用 cron 作业来扩展 pod?或者我应该延迟请求以便让 pod 有时间启动?或者也欢迎其他建议!

【问题讨论】:

【参考方案1】:

如果您正在寻找无服务器风格的即时扩展,您可以在 Kubernetes/GKE 之上使用类似 https://github.com/knative/ 的东西。

除此之外,目前在 Kubernetes 上扩展 Pod 的唯一方法是 Horizo​​ntal Pod Autoscaler,它将查看 CPU/内存平均值(如果您使用 GKE,它可以使用自定义 Stackdriver Metrics可以使用 Prometheus 等从您的应用中公开)。

【讨论】:

【参考方案2】:

我编写了一个简单的基于客户端的应用程序,您可以将其与 CronJob 配对以扩大部署规模。您可以从中汲取灵感并自己编写或直接使用它。我希望这会有所帮助。

https://github.com/balchua/boink

【讨论】:

感谢@Bal Chua!看起来像我正在寻找的方法,将尝试 gcp kubernetes apis 谢谢! 如果这件事有帮助,那就太高兴了。我也可以接受 PR。

以上是关于Kubernetes 通过基于时间的触发器扩展 pod的主要内容,如果未能解决你的问题,请参考以下文章

基于Custom Metrics API的CoreDns水平扩展

基于 Ceph 的 Kubernetes 数据持久化

高可用日志探险——基于 Kubernetes 中的 ELK

通过 Terraform 设置用于自动扩展 kubernetes 集群的启动磁盘大小

基于kubernetes调度框架的自定义调度器实现

基于kubernetes调度框架的自定义调度器实现