配置 Grafana Mimir 使用低资源和 Jsonnet
此页面介绍了如何在 Kubernetes 集群中配置 Jsonnet 以部署低 CPU 和内存资源的 Grafana Mimir。
反亲和性
鉴于 Mimir 的分布式特性,将 Pod 分散到不同的节点上可以提高性能和可靠性。例如,丢失多个 Ingester 可能导致数据丢失,因此最好将它们分布在不同的节点上。
因此,默认情况下,反亲和性规则适用于某些 Kubernetes Deployment 和 StatefulSet。在单节点 Kubernetes 集群中试用 Mimir 时,这些反亲和性规则可能会成为问题。您可以通过设置配置值 _config.<component>_allow_multiple_replicas_on_same_node
来禁用反亲和性。
示例:禁用反亲和性
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 的内存或多个核心来调度组件,请考虑按如下方式覆盖伸缩要求
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,
}