如何在 Kubernetes Horizo​​ntal Pod Autoscaling 中排除一些容器的指标

Posted

技术标签:

【中文标题】如何在 Kubernetes Horizo​​ntal Pod Autoscaling 中排除一些容器的指标【英文标题】:How to exclude some containers' metrics in Kubernetes Horizontal Pod Autoscaling 【发布时间】:2020-02-05 21:42:56 【问题描述】:

我有一个运行两个容器的 pod。实际应用程序在其中一个容器 (container-app) 中运行,另一个是代理容器 (container-proxy)。我为CPU usage percentage 启用了Horizontal Pod Autoscaler (HPA),但正如HPA 文档中所述,这两个容器指标都被放入了计算中。

我想从 HPA 计算中排除 container-proxy 的 CPU 指标,因为我只希望应用程序容器成为 pod 的缩放元素。

有没有办法从多容器 pod 的 HPA 计算中排除一些容器指标?

【问题讨论】:

【参考方案1】:

集群自动扩缩器在每个节点池的基础上工作。 Horizo​​ntal Pod Autoscaler 监控 Pod 的 CPU 利用率并自动扩展副本数量。它在需要时提供即时效率和容量,在用户定义的最小/最大范围内运行,并允许用户设置并忘记它。水平自动扩缩器的设计是针对 pod 而不是针对单个容器。

HPA 计算 pod cpu 利用率为 pod 中所有容器的总 cpu 使用率除以总请求数。如果 pod 中有多个容器,它不会从 HPA 计算中排除容器指标。

【讨论】:

【参考方案2】:

Kubernetes 1.20+ 支持容器指标,以针对每个容器的利用率,这将允许不考虑 Pod 的特定容器。

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#container-resource-metrics

type: ContainerResource
containerResource:
  name: cpu
  container: application
  target:
    type: Utilization
    averageUtilization: 60

虽然它是一个 alpha 功能,所以如果不打开 Kubernetes 中的 alpha 功能就无法使用。

【讨论】:

以上是关于如何在 Kubernetes Horizo​​ntal Pod Autoscaling 中排除一些容器的指标的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?

在 GKE 上的 Kubernetes Horizo​​ntalPodAutoscaler 上描述的指标是啥?

Kubernetes PodDisruptionBudget、Horizo​​ntalPodAutoscaler 和 RollingUpdate 交互?

Kubernetes Pod Horizo​​ntal Autoscaler pod 和对象选择器字段是字符串吗?

如何防止在 Kubernetes 中由 HPA 创建的特定时间段内新扩展的 Pod 缩减?

难以使用外部指标配置 Horizo​​ntal Pod Autoscaler