【问题标题】:How Kubernetes HPA works?Kubernetes HPA 是如何工作的?
【发布时间】:2020-09-27 08:11:29
【问题描述】:

我正在尝试将 Horizo​​ntal Pod Autoscaling (HPA) 添加到我的 Kubernetes 部署中。我的应用程序由 5 个微服务组成,它们相互连接。我有一个 NodePort(一个 Traefik 服务),负责控制来自外部的流量。 该调用是一个 HTTPS POST,它发送一个由应用程序处理的 csv 文件。它可以通过命令行或使用 Web 应用程序 (UI) 发送。 curl 命令如下:

curl https://our_app_name -X POST -F "file=@test.csv"

我对 HPA 功能的疑问如下,

  1. HPA 如何在副本之间分配调用? Kubernetes 是否能够并行计算,即在副本之间划分调用,或者每个调用只发送到一个副本?

  2. 复制品可以同时参加多个电话会议吗?

  3. 在 HPA 规范中,例如这里:

  - type: Resource
    resource:
      name: cpu
      target:
       type: Utilization
        averageUtilization: 50

这 50% 是多少?是 pod 还是集群 CPU 的 50%?

提前感谢您的帮助!

【问题讨论】:

    标签: kubernetes yaml hpa


    【解决方案1】:
    1. 每个调用只发送到一个 pod 的一个副本
    2. 您可以通过 ingress/service 向 pod 发送尽可能多的请求,但最终会到达 pod 的副本之一
    3. 使用averageUtilization: 50 Horizo​​ntalPodAutoscaler 将尝试确保每个pod 大致消耗50%requested CPU。这不是节点的 CPU。

    【讨论】:

    • 好的,非常感谢您的回答!我现在有了更清晰的画面。但是,我现在的问题是:如果 pod 的每个副本不能参加一个以上的呼叫,那么 HPA 的目标是什么?我的意思是,在我的例子中,我使用了 HPA,并且在调用时它创建了 3 个副本,但它只使用了一个,因此延迟并没有减少,对吧?
    • HPA 只是根据您必须手动执行的一些指标自动扩展 Pod。 pod 副本之间的负载平衡仍然是通过 kube-proxy 循环的,除非您使用像 nginx 这样可以进行高级 L7 负载平衡的入口
    • 如果您收到 10 个请求每秒,然后负载增加到 30 个请求每秒,HPA 将帮助获取更多 pod 副本以服务增加的负载。除了尝试管理每个副本的并发请求总数之外,它无助于单个请求的延迟。
    猜你喜欢
    • 2016-11-02
    • 2021-09-07
    • 2021-01-11
    • 2020-04-16
    • 2020-03-07
    • 2023-04-09
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多