【发布时间】:2021-04-14 15:55:10
【问题描述】:
我有:
- 在 k8s 中部署服务 A 和 B
- 普罗米修斯堆栈
我想在服务 B 的度量 m1 更改时扩展服务 A。 我发现但或多或少不适合的解决方案:
- 我可以使用规范的以下部分为服务 A 定义 HPA:
- 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 中按另一项服务的度量来扩展一项服务?
【问题讨论】:
-
你为什么不想使用
external metrics?这似乎是一种正确的方法,请参阅:Kubernetes HPA using metrics from another deployment. -
@matt_j,是的,你是对的,在我的情况下,外部指标以及自定义指标(实际上比自定义指标更好)都有效。但是我的两个服务都在 k8s 中。根据定义,外部指标适用于 k8s 之外的对象。至于我,它看起来更像是一种解决方法。为了使用它们——我需要定义它们。这是一个额外的过程,看起来 prometheus 适配器中没有动态规则更新方式。在 prometheus-adapter 更新过程中,一些规则错误可能会导致 k8s 中的其他应用出现问题。
标签: kubernetes prometheus hpa