【发布时间】:2018-11-19 15:33:08
【问题描述】:
我们有一个大部分时间都处于空闲状态的服务,因此如果我们可以在服务没有收到任何请求时删除所有 pod,比如 30 分钟,以及下一次当新请求到来 Kubernetes 将创建第一个 pod 并处理响应。
是否可以将最小 pod 实例计数设置为 0?
我发现目前Kubernetes不支持这个,有什么办法可以实现吗?
【问题讨论】:
标签: kubernetes kubernetes-helm
我们有一个大部分时间都处于空闲状态的服务,因此如果我们可以在服务没有收到任何请求时删除所有 pod,比如 30 分钟,以及下一次当新请求到来 Kubernetes 将创建第一个 pod 并处理响应。
是否可以将最小 pod 实例计数设置为 0?
我发现目前Kubernetes不支持这个,有什么办法可以实现吗?
【问题讨论】:
标签: kubernetes kubernetes-helm
这在 Kubernetes 中不受支持,就像 nginx、apache 或应用程序引擎(如 puma、passenger、gunicorn、unicorn 甚至 Google App Engine Standard 等可以软启动的应用引擎)所支持的方式然后在第一个请求进来的那一刻提出,缺点是你的第一个请求总是会变慢。 (Kubernetes pod 不必以这种方式运行可能有一些理由,我可以看到很多设计更改或必须为这个非常具体的案例创建一种新型工作负载)
如果 pod 处于空闲状态,它不会消耗那么多资源。您可以针对请求/限制调整 pod resources 的值,以便请求少量 CPU/内存,并将限制设置为更高数量的 CPU/内存。让 pod 始终运行的好处是,理论上,您的第一个请求永远不必等待很长时间才能得到响应。
【讨论】:
是的。您可以使用Horizontal Pod Autoscale 来实现。
查看 Horizontal Pod Autoscale 的示例:Horizontal Pod Autoscaler Walkthrough
【讨论】: