如何在 Kubernetes Horizontal Pod Autoscaling 中排除一些容器的指标
Posted
技术标签:
【中文标题】如何在 Kubernetes Horizontal 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】:集群自动扩缩器在每个节点池的基础上工作。 Horizontal 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 Horizontal Pod Autoscaling 中排除一些容器的指标的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes Horizontal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?
在 GKE 上的 Kubernetes HorizontalPodAutoscaler 上描述的指标是啥?
Kubernetes PodDisruptionBudget、HorizontalPodAutoscaler 和 RollingUpdate 交互?
Kubernetes Pod Horizontal Autoscaler pod 和对象选择器字段是字符串吗?