为什么 K8s 部署 HPA 不计算 Istio/sidecar 的 CPU 请求



我为我的部署/应用程序设置了hpa,例如CPU 80%。

我的应用程序部署有两个容器,一个是用于流量的应用程序,另一个是自动注入的istio-proxy。

当我在交通运行中得到hpa时,我发现hpa的结果有些出乎意料。

istio-proxy的cpu请求为2G。应用程序的cpu请求为4G。istio-proxy消耗的cpu为1G。应用程序消耗的cpu为4G。

因此,我预计这个吊舱(包括2个容器(的hpa为(1+2(/(2+4(=50%。

但实际结果接近(1+2(/4=75%。

看来istio代理的cpu请求被排除在计算hpa的cpu利用率之外。

正如我所知,k8s从部署中获取cpu请求,但实际上对于这个sidecar自动注入案例,部署yaml没有任何istio-proxy容器信息。

我想这就是为什么istio代理cpu请求被排除在外的原因。但这是预期的行为还是错误?

我认为截至1.19,hpa对pod中所有容器的平均值有效。确切的逻辑如下:https://github.com/kubernetes/kubernetes/blob/v1.9.0/pkg/controller/podautoscaler/metrics/utilization.go#L49

currentUtilization = int32((metricsTotal * 100) / requestsTotal)

根据上述逻辑,HPA计算pod中所有容器的总cpu使用率除以总请求

相关内容

  • 没有找到相关文章

最新更新