所以我认为,我对 Horizontal Pod Autoscaler 存在误解。或者说,我认为我还不了解它存在的确切/最常见的原因。
Pod 在节点上运行。节点是具有不可变硬件(例如 4CPU、16RAM)的虚拟机。
当我的应用收到过多流量时,HPA 会通过以另一个 Pod 的形式复制我的应用来扩展。现在唯一有意义的 HPA 情况是,当我的应用程序它可以处理的请求数量是“固定的”,对吗?
我的想法是这样的:
如果应用程序使用线程来实现并发,那么启用 HPA 就毫无意义了,因为一次最多只能处理 4 个请求(使用 4 个 CPU 核心)。当 HPA 横向扩展时,没有更多可用的 CPU 核心,因此情况会更糟,因为它会在横向扩展过程中消耗资源,而 2 个 pod 总共也只能使用 4 个核心。
那么有哪些用例 / 好处呢(除了一个 Pod 出现错误时的冗余)?
prometheus-adapter 文档指出:
…except you’re not sure that just one instance will handle all the traffic once it goes viral. Thankfully, you’ve got Kubernetes
然后参考 HPA。听起来再加一个 pod 就能轻松解决这个问题。
扩展的最终原因难道不总是资源短缺吗?请求太多 => CPU/RAM 太少
我目前只有一个用于一种应用程序的集群。我可以想象 HPA 很有用,如果有一个非常强大的底层 VM,例如 36 个 CPU 核心和 128GB RAM,它就像一个计算能力的“存储”,如果应用程序收到太多流量,HPA 会在节点上添加一个 Pod,该 Pod 接收 VM 上剩余的一些计算能力(每个 pod 可能有资源限制)。
但是,总会有“未使用”的 CPU/RAM 资源,这会很昂贵……
因为这不是一个真正的问题,而更像是我抛出自己的想法,要求提供信息,所以每一条值得深思的信息都会受到赞赏