我目前正在尝试使用prometheus和prometheus适配器运行一个自动标度演示,我想知道是否有一种方法可以根据prometheus从另一个部署中提取的指标自动调整我的部署。
我现在拥有的是两个不同的部署,kafka -使用者应用程序(我想扩展)和kafka-出口商(它暴露了我将用于缩放的kafka度量标准)。我知道,如果我把它们作为容器在相同的部署中自动标度工作,但问题是卡夫卡出口商也会自动标度,这并不理想,所以我想把它们分开。我试过使用以下HPA,但我无法让它起作用:
kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2beta1
metadata:
name: consumer-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: kafka-consumer-application
minReplicas: 1
maxReplicas: 10
metrics:
- type: object
object:
target: kafka-exporter
metricName: "kafka_consumergroup_lag"
targetValue: 5我不确定我是否做错了什么,或者这是不是我不能做的事情,所以任何建议都是值得赞赏的。
谢谢!
注意:我使用此配置运行适配器:
rules:
default: false
resource: {}
custom:
- seriesQuery: 'kafka_consumergroup_lag'
resources:
overrides:
kubernetes_namespace: {resource: "namespace"}
kubernetes_pod_name: {resource: "pod"}
name:
matches: "kafka_consumergroup_lag"
as: "kafka_consumergroup_lag"
metricsQuery: 'avg_over_time(kafka_consumergroup_lag{topic="my-topic",consumergroup="we-consume"}[1m])'
``发布于 2020-06-09 13:34:39
在kubernetes文件中,您可以阅读:
对运行在Kubernetes上的Kubernetes对象应用程序不相关的度量进行自动标度,可能需要基于与Kubernetes集群中的任何对象没有明显关系的度量,例如描述与Kubernetes命名空间没有直接关联的托管服务的度量。在Kubernetes 1.10及更高版本中,您可以使用外部度量来解决这个用例
因此,使用外部度量,您的HPA yaml看起来可能如下所示:
kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2beta2
metadata:
name: consumer-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: kafka-consumer-application
minReplicas: 1
maxReplicas: 10
metrics:
- type: External
external:
metric:
name: kafka_consumergroup_lag
#selector:
# matchLabels:
# topic: "my-topic"
target:
type: AverageValue
averageValue: 5如果您有多个kafka出口商,您可以使用selector过滤它(来源):
选择器是用于给定度量的标准kubernetes标签选择器的字符串编码形式,当设置它时,它作为附加参数传递给度量服务器,以获得更具体的度量范围。当未设置时,只使用metricName来收集指标。
还请看一下这个堆栈问题。
https://stackoverflow.com/questions/62262647
复制相似问题