菜单
开源

配置Grafana米密尔与Jsonnet自动定量

米密尔Jsonnet支持自动定量为下列组件:

自动定量,这是基于普罗米修斯指标和科达(Kubernetes-based事件驱动的自动定量),使用Kubernetes水平舱自动定量(HPA)。

HPA没有直接在配置Jsonnet但由科达创建和更新。科达是一个运营商,Kubernetes集群中运行,负责简化HPA与自定义指标的设置(普罗米修斯在我们的例子中)。

科达是如何工作的

科达是一个Kubernetes算子旨在简化HPA之间的布线和普罗米修斯。

Kubernetes HPA开箱即用的,不能基于度量的自动定量刮普罗米修斯,但是它允许配置自定义度量API服务器代理指标从一个数据源(例如普罗米修斯)Kubernetes。设置自定义度量API服务器普罗米修斯Kubernetes可以是一个繁琐的操作,所以科达提供了一个操作符自动设置它。科达支持代理指标为各种不同的来源,包括普罗米修斯。

科达简而言之

  • 经营者和外部指标运行服务器。
  • 许多指标的度量服务器支持代理来源,包括普罗米修斯。
  • 的运营商手表ScaledObject自定义资源定义(CRD),定义最小和最大的复制品,和扩展部署或StatefulSet触发指标,然后配置相关HPA资源。你不创建Kubernetes HPA资源,但运营商创建它时ScaledObject创建CRD(和不断更新其整个生命周期)。

是指科达的文档为更多的信息。

如果科达是不健康的

部署总是由HPA的自动定量,这是一个本地Kubernetes特性。科达,我们使用它,不会改变米密尔部署或StatefulSets复制品的数量。

然而,如果科达没有运行成功,有后果米密尔自动定量:

  • keda-operator下降(不重要):变更ScaledObjectCRD不会反映到HPA直到操作员将回来在线。下丘脑-垂体-肾上腺轴功能不受影响。
  • keda-operator-metrics-apiserver下降(关键):HPA不能获取更新指标和它会停止扩展部署直到指标会回来。部署(例如查询器)将继续工作,但任何的流量激增,HPA将无法检测它(由于缺乏度量),所以不会扩大。

警报MimirAutoscalerNotActive火灾如果HPA无法规模部署任何理由(如无法从科达刮指标度量API服务器)。

Kubernetes HPA是如何工作的

指Kubernetes水平吊舱自动定量文档有一个全面了解HPA是如何工作的。

如何启用自动定量

以下Jsonnet配置代码片段显示了一个示例如何启用米密尔与Jsonnet自动定量:

当地米密尔=进口“米密尔/ mimir.libsonnet”;米密尔{_config +: {autoscaling_prometheus_url: http://prometheus.default: 9090 /普罗米修斯,/ /启用查询器自动定量。autoscaling_querier_enabled:真的,autoscaling_querier_min_replicas: 10, autoscaling_querier_max_replicas: 40岁/ /使统治者查询器自动定量。autoscaling_ruler_querier_enabled:真的,autoscaling_ruler_querier_min_replicas: 10, autoscaling_ruler_querier_max_replicas: / /使经销商自动定量。autoscaling_distributor_enabled:真的,autoscaling_distributor_min_replicas: 10, autoscaling_distributor_max_replicas: 40岁}}

请注意:科达米密尔将不会安装jsonnet。你可以按照部署科达指令在Kubernetes集群安装它。

如何禁用自动定量

有两个选项来禁用自动定量在米密尔集群:

  1. 设置最小副本=最大副本。
  2. 使HPA退役。

设置最小副本=最大副本

如果科达和Kubernetes HPA工作正确但HPA配置(指标和阈值)不给预期的结果(例如,不扩大在需要时),绕过自动定量算法的一个简单的解决方案是将最小和最大副本设置为相同的值。(如。autoscaling_querier_min_replicas: 40autoscaling_querier_max_replicas: 40)。

解除HPA

完全解除HPA在米密尔集群中你必须:

  1. 禁用相关的自动定量(如。autoscaling_querier_enabled:假)。
  2. 手动设置为给定的米密尔组件预期数量的副本。

下面的例子显示了如何禁用查询器自动定量和配置查询器部署10副本:

当地k =进口'github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet';本地部署= k.apps.v1.deployment;米密尔{_config +: {autoscaling_querier_enabled:假的,},querier_deployment +: deployment.mixin.spec.withReplicas (10)}