Skip to content

Commit

Permalink
Merge pull request #84 from metalmatze/anti-affinity
Browse files Browse the repository at this point in the history
Add host anti-affinity to receive and querier
  • Loading branch information
metalmatze authored Jan 7, 2020
2 parents 81dd482 + 4da1b2e commit 0c90793
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 32 deletions.
14 changes: 14 additions & 0 deletions examples/all/manifests/thanos-querier-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@ spec:
labels:
app.kubernetes.io/name: thanos-querier
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- thanos-querier
namespaces:
- monitoring
topologyKey: kubernetes.io/hostname
weight: 100
containers:
- args:
- query
Expand Down
14 changes: 14 additions & 0 deletions examples/all/manifests/thanos-receive-statefulSet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ spec:
labels:
app.kubernetes.io/name: thanos-receive
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- thanos-receive
namespaces:
- monitoring
topologyKey: kubernetes.io/hostname
weight: 100
containers:
- args:
- receive
Expand Down
16 changes: 15 additions & 1 deletion jsonnet/kube-thanos/kube-thanos-querier.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
deployment:
local deployment = k.apps.v1.deployment;
local container = deployment.mixin.spec.template.spec.containersType;
local affinity = deployment.mixin.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecutionType;
local matchExpression = affinity.mixin.podAffinityTerm.labelSelector.matchExpressionsType;

local c =
container.new($.thanos.querier.deployment.metadata.name, tq.image) +
Expand Down Expand Up @@ -63,7 +65,19 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
deployment.mixin.metadata.withNamespace(tq.namespace) +
deployment.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.thanos.querier.deployment.metadata.name }) +
deployment.mixin.spec.selector.withMatchLabels($.thanos.querier.deployment.metadata.labels) +
deployment.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120),
deployment.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120) +
deployment.mixin.spec.template.spec.affinity.podAntiAffinity.withPreferredDuringSchedulingIgnoredDuringExecution([
affinity.new() +
affinity.withWeight(100) +
affinity.mixin.podAffinityTerm.withNamespaces(tq.namespace) +
affinity.mixin.podAffinityTerm.withTopologyKey('kubernetes.io/hostname') +
affinity.mixin.podAffinityTerm.labelSelector.withMatchExpressions([
matchExpression.new() +
matchExpression.withKey('app.kubernetes.io/name') +
matchExpression.withOperator('In') +
matchExpression.withValues([$.thanos.querier.deployment.metadata.labels['app.kubernetes.io/name']]),
]),
]),
},
},
}
15 changes: 14 additions & 1 deletion jsonnet/kube-thanos/kube-thanos-receive.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';

statefulSet:
local sts = k.apps.v1.statefulSet;
local affinity = sts.mixin.spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecutionType;
local matchExpression = affinity.mixin.podAffinityTerm.labelSelector.matchExpressionsType;
local volume = sts.mixin.spec.template.spec.volumesType;
local container = sts.mixin.spec.template.spec.containersType;
local containerEnv = container.envType;
Expand Down Expand Up @@ -83,6 +85,18 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
sts.mixin.spec.withServiceName($.thanos.receive.service.metadata.name) +
sts.mixin.spec.selector.withMatchLabels($.thanos.receive.statefulSet.metadata.labels) +
sts.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120) +
sts.mixin.spec.template.spec.affinity.podAntiAffinity.withPreferredDuringSchedulingIgnoredDuringExecution([
affinity.new() +
affinity.withWeight(100) +
affinity.mixin.podAffinityTerm.withNamespaces(tr.namespace) +
affinity.mixin.podAffinityTerm.withTopologyKey('kubernetes.io/hostname') +
affinity.mixin.podAffinityTerm.labelSelector.withMatchExpressions([
matchExpression.new() +
matchExpression.withKey('app.kubernetes.io/name') +
matchExpression.withOperator('In') +
matchExpression.withValues([$.thanos.receive.statefulSet.metadata.labels['app.kubernetes.io/name']]),
]),
]) +
sts.mixin.spec.template.spec.withVolumes([
volume.fromEmptyDir('data'),
]) +
Expand All @@ -91,7 +105,6 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
volumeClaimTemplates:: null,
},
},

},

querier+: {
Expand Down
60 changes: 30 additions & 30 deletions jsonnetfile.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
{
"dependencies": [
{
"name": "kube-thanos",
"source": {
"local": {
"directory": "jsonnet/kube-thanos"
}
},
"version": "."
},
{
"name": "grafonnet",
"source": {
"git": {
"remote": "https://github.com/grafana/grafonnet-lib",
"subdir": "grafonnet"
}
},
"version": "master"
},
{
"name": "grafana-builder",
"source": {
"git": {
"remote": "https://github.com/grafana/jsonnet-libs",
"subdir": "grafana-builder"
}
},
"version": "master"
"dependencies": [
{
"name": "grafana-builder",
"source": {
"git": {
"remote": "https://github.com/grafana/jsonnet-libs",
"subdir": "grafana-builder"
}
]
},
"version": "master"
},
{
"name": "grafonnet",
"source": {
"git": {
"remote": "https://github.com/grafana/grafonnet-lib",
"subdir": "grafonnet"
}
},
"version": "master"
},
{
"name": "kube-thanos",
"source": {
"local": {
"directory": "jsonnet/kube-thanos"
}
},
"version": "."
}
]
}
14 changes: 14 additions & 0 deletions manifests/thanos-querier-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@ spec:
labels:
app.kubernetes.io/name: thanos-querier
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- thanos-querier
namespaces:
- monitoring
topologyKey: kubernetes.io/hostname
weight: 100
containers:
- args:
- query
Expand Down

0 comments on commit 0c90793

Please sign in to comment.