Skip to content
This repository was archived by the owner on Apr 28, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## master / unreleased

* [FEATURE] Added "Cortex / Rollout progress" dashboard. #289 #290
* [FEATURE] Added `cortex/query-scheduler.libsonnet` to enable use of query-scheduler service. It also reconfigures querier and frontend to use query-scheduler.
* [ENHANCEMENT] Added `newCompactorStatefulSet()` function to create a custom statefulset for the compactor. #287
* [ENHANCEMENT] Added option to configure compactor job name used in dashboards and alerts. #287
* [ENHANCEMENT] Added `CortexCompactorHasNotSuccessfullyRunCompaction` alert. #292 #294
Expand Down
56 changes: 56 additions & 0 deletions cortex/query-scheduler.libsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Query-scheduler is optional service. When query-scheduler.libsonnet is added to Cortex, querier and frontend
// are reconfigured to use query-scheduler service.
{
local container = $.core.v1.container,
local deployment = $.apps.v1.deployment,
local service = $.core.v1.service,

_images+:: {
query_scheduler: $._images.cortex,
},

query_scheduler_args+::
$._config.grpcConfig
{
target: 'query-scheduler',
'log.level': 'debug',
'query-scheduler.max-outstanding-requests-per-tenant': 100,
},

query_scheduler_container::
container.new('query-scheduler', $._images.query_scheduler) +
container.withPorts($.util.defaultPorts) +
container.withArgsMixin($.util.mapToFlags($.query_scheduler_args)) +
$.jaeger_mixin +
$.util.readinessProbe +
$.util.resourcesRequests('2', '1Gi') +
$.util.resourcesLimits(null, '2Gi'),


query_scheduler_deployment:
deployment.new('query-scheduler', 2, [$.query_scheduler_container]) +
$.util.configVolumeMount('overrides', '/etc/cortex') +
$.util.antiAffinity,

query_scheduler_service:
$.util.serviceFor($.query_scheduler_deployment),

// Headless to make sure resolution gets IP address of target pods, and not service IP.
query_scheduler_discovery_service:
$.util.serviceFor($.query_scheduler_deployment) +
service.mixin.spec.withPublishNotReadyAddresses(true) +
service.mixin.spec.withClusterIp('None') +
service.mixin.metadata.withName('query-scheduler-discovery'),

// Reconfigure querier and query-frontend to use scheduler.
querier_args+:: {
'querier.worker-match-max-concurrent': 'true',
'querier.worker-parallelism': null, // Disabled since we set worker-match-max-concurrent.
'querier.frontend-address': null,
'querier.scheduler-address': 'query-scheduler-discovery.%(namespace)s.svc.cluster.local:9095' % $._config,
},

query_frontend_args+:: {
'frontend.scheduler-address': 'query-scheduler-discovery.%(namespace)s.svc.cluster.local:9095' % $._config,
},
}