Kubernetes:将HPA与其他POD的指标结合使用
我有:Kubernetes:将HPA与其他POD的指标结合使用,kubernetes,prometheus,hpa,Kubernetes,Prometheus,Hpa,我有: k8s中服务A和B的部署 普罗米修斯栈 当服务B的度量m1改变时,我想缩放服务A。 我发现的或多或少不适合的解决方案: 我可以使用规范的以下部分定义服务A的HPA: 从技术上讲,这是可行的。但它不适合k8s的动态特性。 另外,我不能在HPA中使用pods度量(metrics:-type:pods-pods:),因为它将为服务A的pods请求m1度量(显然没有这个) 在prometheus适配器中定义自定义度量,该适配器从服务B的POD查询m1度量。这更合适,但看起来像是解决方法,因为我已
因此,请告诉我如何通过k8s中的另一项服务来衡量一项服务?我决定提供一个社区Wiki答案,以帮助其他面临类似问题的人 是一种Kubernetes功能,允许基于一个或多个监控指标扩展应用程序。
正如我们可以在以下文件中找到的: 水平Pod Autoscaler根据观察到的CPU利用率(或者,在支持自定义指标的情况下,在某些其他应用程序提供的指标上),自动缩放复制控制器、部署、副本集或有状态集中的Pod数量 我们可以使用水平吊舱自动缩放仪:
- :预定义的资源使用指标(CPU和 吊舱和节点的内存)
- :与Kubernetes关联的自定义度量 反对
- :自定义度量值不与 库伯内特斯物体
资源指标
,您可以指定CPU以外的其他资源指标(例如内存)。这似乎是最简单和最基本的缩放方法,但我们可以通过使用自定义度量
或外部度量
来使用更具体的度量
自定义指标
和外部指标
之间有一个主要区别(请参见:):
自定义指标和外部指标彼此不同:
在Kubernetes中运行的应用程序会报告一个自定义度量。
外部度量是从未在集群上运行但其性能会影响Kubernetes应用程序的应用程序或服务报告的
总而言之,在我看来,在上述情况下使用自定义指标是可以的,
我没有找到任何其他合适的方法来完成这项任务。为什么不使用外部度量值
?这似乎是一个正确的方法,请看:。@matt_j,是的,你是对的,在我的情况下,外部指标和自定义指标一样有效(实际上比自定义指标更好)。但我的两项服务都在k8s中。根据定义,外部指标适用于k8s之外的对象。对我来说,这看起来更像是一个解决办法。对于使用它们,我需要定义它们。这是一个附加过程,在prometheus适配器中似乎没有动态规则更新方式。在普罗米修斯适配器更新期间,规则中的某些错误可能会导致k8s中的其他应用程序出现问题。在这种情况下,您是否可以将HPA的建议配置与自定义指标(来自其他服务的指标)共享?我对一个协会感兴趣。因为有了自定义指标,就需要使用Pod类型。因此,它将请求带有pod选择器的系列
- type: Object
object:
metric:
name: m1
describedObject:
apiVersion: api/v1
kind: Pod
name: certain-pod-of-service-B
current:
value: 10k