菜单
开源

配置 Grafana Mimir 使用低资源和 Jsonnet

此页面介绍了如何在 Kubernetes 集群中配置 Jsonnet 以部署低 CPU 和内存资源的 Grafana Mimir。

反亲和性

鉴于 Mimir 的分布式特性,将 Pod 分散到不同的节点上可以提高性能和可靠性。例如,丢失多个 Ingester 可能导致数据丢失,因此最好将它们分布在不同的节点上。

因此,默认情况下,反亲和性规则适用于某些 Kubernetes Deployment 和 StatefulSet。在单节点 Kubernetes 集群中试用 Mimir 时,这些反亲和性规则可能会成为问题。您可以通过设置配置值 _config.<component>_allow_multiple_replicas_on_same_node 来禁用反亲和性。

示例:禁用反亲和性

jsonnet
local mimir = import 'mimir/mimir.libsonnet';

mimir {
  _config+:: {
    ingester_allow_multiple_replicas_on_same_node: true,
    store_gateway_allow_multiple_replicas_on_same_node: true,
  },
}

资源

提供的 Jsonnet 中 Mimir 组件的默认伸缩是有见地的,基于工程师多年在 Grafana Labs 运行它的经验。默认资源请求和限制也针对提供的警报规则进行了微调。有关更多信息,请参阅监控 Grafana Mimir

但是,在某些用例中,您可能希望更改默认资源请求、其限制,或两者都更改。例如,如果您只是在测试 Mimir,并且想在小型(可能只有一个节点)Kubernetes 集群上运行它,并且没有数十 GB 的内存或多个核心来调度组件,请考虑按如下方式覆盖伸缩要求

jsonnet
local k = import 'github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet',
      deployment = k.apps.v1.deployment,
      statefulSet = k.apps.v1.statefulSet;
local mimir = import 'mimir/mimir.libsonnet';

mimir {
  _config+:: {
    // ... configuration values
  },

  compactor_container+: k.util.resourcesRequests('100m', '128Mi'),
  compactor_statefulset+: statefulSet.mixin.spec.withReplicas(1),

  distributor_container+: k.util.resourcesRequests('100m', '128Mi'),
  distributor_deployment+: deployment.mixin.spec.withReplicas(2),

  ingester_container+: k.util.resourcesRequests('100m', '128Mi'),
  ingester_statefulset+: statefulSet.mixin.spec.withReplicas(3),

  querier_container+: k.util.resourcesRequests('100m', '128Mi'),
  querier_deployment+: deployment.mixin.spec.withReplicas(2),

  query_frontend_container+: k.util.resourcesRequests('100m', '128Mi'),
  query_frontend_deployment+: deployment.mixin.spec.withReplicas(2),

  store_gateway_container+: k.util.resourcesRequests('100m', '128Mi'),
  store_gateway_statefulset+: statefulSet.mixin.spec.withReplicas(1),

  local smallMemcached = {
    cpu_requests:: '100m',
    memory_limit_mb:: 64,
    memory_request_overhead_mb:: 8,
    statefulSet+: statefulSet.mixin.spec.withReplicas(1),
  },

  memcached_chunks+: smallMemcached,
  memcached_frontend+: smallMemcached,
  memcached_index_queries+: smallMemcached,
  memcached_metadata+: smallMemcached,
}