[英]Kubernetes: using HPA with metrics from other pods
我有:
我想在服务 B 的度量 m1 更改时扩展服务 A。 我发现但或多或少不适合的解决方案:
- type: Object
object:
metric:
name: m1
describedObject:
apiVersion: api/v1
kind: Pod
name: certain-pod-of-service-B
current:
value: 10k
从技术上讲,它会起作用。 但它不适合 k8s 的动态特性。 我也不能在 HPA 中使用 pods metric(metrics: - type: Pods pods:) 因为它会为服务 A 的 pod 请求 m1 metric(显然没有这个)
在 prometheus-adapter 中定义自定义指标,从服务 B 的 pod 查询 m1 指标。它更合适,但看起来像解决方法,因为我已经有一个指标 m1
外部指标也是如此
我觉得我错过了一些东西,因为它看起来不像是一个不现实的案例:) 所以,请告诉我如何在 k8s 中按另一个服务的度量来扩展一个服务?
我决定提供一个社区 Wiki 答案,以帮助面临类似问题的其他人。
Horizontal Pod Autoscaler是一项 Kubernetes 功能,允许基于一个或多个监控指标扩展应用程序。
我们可以在Horizontal Pod Autoscaler 文档中找到:
Horizontal Pod Autoscaler 会根据观察到的 CPU 利用率(或者,在自定义指标支持下,根据一些其他应用程序提供的指标)自动扩展复制 controller、部署、副本集或有状态集中的 Pod 数量。
我们可以在 Horizontal Pod Autoscaler 中使用三组指标:
任何 HPA 目标都可以根据扩展目标中pod (或容器)的资源使用情况进行扩展。 CPU 利用率指标是一个resource metric
,您可以指定除 CPU 之外的其他资源指标(例如内存)。 这似乎是最简单、最基本的扩展方法,但我们可以通过使用custom metrics
或external metrics
。
custom metrics
和external metrics
之间有一个主要区别(请参阅: 用于自动缩放工作负载的自定义和外部指标):
自定义指标和外部指标彼此不同:
在 Kubernetes 中运行的应用程序会报告自定义指标。 来自未在集群上运行的应用程序或服务报告的外部指标,但其性能会影响您的 Kubernetes 应用程序。
总而言之,在我看来,在上述情况下使用custom metrics
是可以的,我没有找到任何其他合适的方法来完成这项任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.