Skip to content

Commit 13609ff

Browse files
authored
Add termination grace period and liveness probes (#65)
Signed-off-by: Kemal Akkoyun <[email protected]>
1 parent 7f91fb0 commit 13609ff

12 files changed

+143
-7
lines changed

Diff for: examples/all/manifests/thanos-bucket-deployment.yaml

+15
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,29 @@ spec:
2727
key: thanos.yaml
2828
name: thanos-objectstorage
2929
image: quay.io/thanos/thanos:v0.9.0
30+
livenessProbe:
31+
failureThreshold: 4
32+
httpGet:
33+
path: /-/healthy
34+
port: 8080
35+
scheme: HTTP
36+
periodSeconds: 30
3037
name: thanos-bucket
3138
ports:
3239
- containerPort: 8080
3340
name: http
41+
readinessProbe:
42+
httpGet:
43+
path: /-/ready
44+
port: 8080
45+
scheme: HTTP
46+
initialDelaySeconds: 10
47+
periodSeconds: 30
3448
resources:
3549
limits:
3650
cpu: 250m
3751
memory: 512Mi
3852
requests:
3953
cpu: 100m
4054
memory: 256Mi
55+
terminationGracePeriodSeconds: 120

Diff for: examples/all/manifests/thanos-compactor-statefulSet.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ spec:
3232
key: thanos.yaml
3333
name: thanos-objectstorage
3434
image: quay.io/thanos/thanos:v0.9.0
35+
livenessProbe:
36+
failureThreshold: 4
37+
httpGet:
38+
path: /-/healthy
39+
port: 10902
40+
scheme: HTTP
41+
periodSeconds: 30
3542
name: thanos-compactor
3643
ports:
3744
- containerPort: 10902
@@ -41,6 +48,8 @@ spec:
4148
path: /-/ready
4249
port: 10902
4350
scheme: HTTP
51+
initialDelaySeconds: 10
52+
periodSeconds: 30
4453
resources:
4554
limits:
4655
cpu: 500m
@@ -52,6 +61,7 @@ spec:
5261
- mountPath: /var/thanos/compactor
5362
name: thanos-compactor-data
5463
readOnly: false
64+
terminationGracePeriodSeconds: 120
5565
volumes:
5666
- emptyDir: {}
5767
name: thanos-compactor-data

Diff for: examples/all/manifests/thanos-querier-deployment.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ spec:
2626
- --store=dnssrv+_grpc._tcp.prometheus-k8s.monitoring.svc.cluster.local
2727
- --store=dnssrv+_grpc._tcp.thanos-rule.monitoring.svc.cluster.local
2828
image: quay.io/thanos/thanos:v0.9.0
29+
livenessProbe:
30+
failureThreshold: 4
31+
httpGet:
32+
path: /-/healthy
33+
port: 9090
34+
scheme: HTTP
35+
periodSeconds: 30
2936
name: thanos-querier
3037
ports:
3138
- containerPort: 10901
@@ -37,10 +44,13 @@ spec:
3744
path: /-/ready
3845
port: 9090
3946
scheme: HTTP
47+
initialDelaySeconds: 10
48+
periodSeconds: 30
4049
resources:
4150
limits:
4251
cpu: "1"
4352
memory: 1Gi
4453
requests:
4554
cpu: 100m
4655
memory: 256Mi
56+
terminationGracePeriodSeconds: 120

Diff for: examples/all/manifests/thanos-receive-statefulSet.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ spec:
3737
key: thanos.yaml
3838
name: thanos-objectstorage
3939
image: quay.io/thanos/thanos:v0.9.0
40+
livenessProbe:
41+
failureThreshold: 4
42+
httpGet:
43+
path: /-/healthy
44+
port: 10902
45+
scheme: HTTP
46+
periodSeconds: 30
4047
name: thanos-receive
4148
ports:
4249
- containerPort: 10901
@@ -50,6 +57,8 @@ spec:
5057
path: /-/ready
5158
port: 10902
5259
scheme: HTTP
60+
initialDelaySeconds: 10
61+
periodSeconds: 30
5362
resources:
5463
limits:
5564
cpu: "1"
@@ -61,6 +70,7 @@ spec:
6170
- mountPath: /var/thanos/receive
6271
name: thanos-receive-data
6372
readOnly: false
73+
terminationGracePeriodSeconds: 120
6474
volumeClaimTemplates:
6575
- metadata:
6676
name: thanos-receive-data

Diff for: examples/all/manifests/thanos-store-statefulSet.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ spec:
3030
key: thanos.yaml
3131
name: thanos-objectstorage
3232
image: quay.io/thanos/thanos:v0.9.0
33+
livenessProbe:
34+
failureThreshold: 4
35+
httpGet:
36+
path: /-/healthy
37+
port: 10902
38+
scheme: HTTP
39+
periodSeconds: 30
3340
name: thanos-store
3441
ports:
3542
- containerPort: 10901
@@ -41,6 +48,8 @@ spec:
4148
path: /-/ready
4249
port: 10902
4350
scheme: HTTP
51+
initialDelaySeconds: 10
52+
periodSeconds: 30
4453
resources:
4554
limits:
4655
cpu: "2"
@@ -52,6 +61,7 @@ spec:
5261
- mountPath: /var/thanos/store
5362
name: thanos-store-data
5463
readOnly: false
64+
terminationGracePeriodSeconds: 120
5565
volumeClaimTemplates:
5666
- metadata:
5767
name: thanos-store-data

Diff for: jsonnet/kube-thanos/kube-thanos-bucket.libsonnet

+15-2
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,25 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
5050
container.mixin.resources.withLimits({ cpu: '250m', memory: '512Mi' }) +
5151
container.withPorts([
5252
{ name: 'http', containerPort: tb.ports.http },
53-
]);
53+
]) +
54+
container.mixin.livenessProbe +
55+
container.mixin.livenessProbe.withPeriodSeconds(30) +
56+
container.mixin.livenessProbe.withFailureThreshold(4) +
57+
container.mixin.livenessProbe.httpGet.withPort($.thanos.bucket.service.spec.ports[0].port) +
58+
container.mixin.livenessProbe.httpGet.withScheme('HTTP') +
59+
container.mixin.livenessProbe.httpGet.withPath('/-/healthy') +
60+
container.mixin.readinessProbe +
61+
container.mixin.readinessProbe.withInitialDelaySeconds(10) +
62+
container.mixin.readinessProbe.withPeriodSeconds(30) +
63+
container.mixin.readinessProbe.httpGet.withPort($.thanos.bucket.service.spec.ports[0].port) +
64+
container.mixin.readinessProbe.httpGet.withScheme('HTTP') +
65+
container.mixin.readinessProbe.httpGet.withPath('/-/ready');
5466

5567
deployment.new(tb.name, 1, c, $.thanos.bucket.deployment.metadata.labels) +
5668
deployment.mixin.metadata.withNamespace(tb.namespace) +
5769
deployment.mixin.metadata.withLabels({ 'app.kubernetes.io/name': tb.name }) +
58-
deployment.mixin.spec.selector.withMatchLabels(tb.labels),
70+
deployment.mixin.spec.selector.withMatchLabels(tb.labels) +
71+
deployment.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120),
5972
},
6073
},
6174
}

Diff for: jsonnet/kube-thanos/kube-thanos-compactor.libsonnet

+13-1
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,24 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
5656
container.withVolumeMounts([
5757
containerVolumeMount.new('thanos-compactor-data', '/var/thanos/compactor', false),
5858
]) +
59-
container.mixin.readinessProbe.httpGet.withPort($.thanos.compactor.service.spec.ports[0].port).withScheme('HTTP').withPath('/-/ready');
59+
container.mixin.livenessProbe +
60+
container.mixin.livenessProbe.withPeriodSeconds(30) +
61+
container.mixin.livenessProbe.withFailureThreshold(4) +
62+
container.mixin.livenessProbe.httpGet.withPort($.thanos.compactor.service.spec.ports[0].port) +
63+
container.mixin.livenessProbe.httpGet.withScheme('HTTP') +
64+
container.mixin.livenessProbe.httpGet.withPath('/-/healthy') +
65+
container.mixin.readinessProbe +
66+
container.mixin.readinessProbe.withInitialDelaySeconds(10) +
67+
container.mixin.readinessProbe.withPeriodSeconds(30) +
68+
container.mixin.readinessProbe.httpGet.withPort($.thanos.compactor.service.spec.ports[0].port) +
69+
container.mixin.readinessProbe.httpGet.withScheme('HTTP') +
70+
container.mixin.readinessProbe.httpGet.withPath('/-/ready');
6071

6172
statefulSet.new(tc.name, 1, c, [], $.thanos.compactor.statefulSet.metadata.labels) +
6273
statefulSet.mixin.metadata.withNamespace(tc.namespace) +
6374
statefulSet.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.thanos.compactor.statefulSet.metadata.name }) +
6475
statefulSet.mixin.spec.withServiceName($.thanos.compactor.service.metadata.name) +
76+
statefulSet.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120) +
6577
statefulSet.mixin.spec.template.spec.withVolumes([
6678
volume.fromEmptyDir('thanos-compactor-data'),
6779
]) +

Diff for: jsonnet/kube-thanos/kube-thanos-querier.libsonnet

+14-2
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,24 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
4646
{ name: 'grpc', containerPort: $.thanos.querier.service.spec.ports[0].port },
4747
{ name: 'http', containerPort: $.thanos.querier.service.spec.ports[1].port },
4848
]) +
49-
container.mixin.readinessProbe.httpGet.withPort($.thanos.querier.service.spec.ports[1].port).withScheme('HTTP').withPath('/-/ready');
49+
container.mixin.livenessProbe +
50+
container.mixin.livenessProbe.withPeriodSeconds(30) +
51+
container.mixin.livenessProbe.withFailureThreshold(4) +
52+
container.mixin.livenessProbe.httpGet.withPort($.thanos.querier.service.spec.ports[1].port) +
53+
container.mixin.livenessProbe.httpGet.withScheme('HTTP') +
54+
container.mixin.livenessProbe.httpGet.withPath('/-/healthy') +
55+
container.mixin.readinessProbe +
56+
container.mixin.readinessProbe.withInitialDelaySeconds(10) +
57+
container.mixin.readinessProbe.withPeriodSeconds(30) +
58+
container.mixin.readinessProbe.httpGet.withPort($.thanos.querier.service.spec.ports[1].port) +
59+
container.mixin.readinessProbe.httpGet.withScheme('HTTP') +
60+
container.mixin.readinessProbe.httpGet.withPath('/-/ready');
5061

5162
deployment.new(tq.name, tq.replicas, c, $.thanos.querier.deployment.metadata.labels) +
5263
deployment.mixin.metadata.withNamespace(tq.namespace) +
5364
deployment.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.thanos.querier.deployment.metadata.name }) +
54-
deployment.mixin.spec.selector.withMatchLabels($.thanos.querier.deployment.metadata.labels),
65+
deployment.mixin.spec.selector.withMatchLabels($.thanos.querier.deployment.metadata.labels) +
66+
deployment.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120),
5567
},
5668
},
5769
}

Diff for: jsonnet/kube-thanos/kube-thanos-receive.libsonnet

+13-1
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,25 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
6464
container.withVolumeMounts([
6565
containerVolumeMount.new(tr.name + '-data', '/var/thanos/receive', false),
6666
]) +
67-
container.mixin.readinessProbe.httpGet.withPort($.thanos.receive.service.spec.ports[1].port).withScheme('HTTP').withPath('/-/ready');
67+
container.mixin.livenessProbe +
68+
container.mixin.livenessProbe.withPeriodSeconds(30) +
69+
container.mixin.livenessProbe.withFailureThreshold(4) +
70+
container.mixin.livenessProbe.httpGet.withPort($.thanos.receive.service.spec.ports[1].port) +
71+
container.mixin.livenessProbe.httpGet.withScheme('HTTP') +
72+
container.mixin.livenessProbe.httpGet.withPath('/-/healthy') +
73+
container.mixin.readinessProbe +
74+
container.mixin.readinessProbe.withInitialDelaySeconds(10) +
75+
container.mixin.readinessProbe.withPeriodSeconds(30) +
76+
container.mixin.readinessProbe.httpGet.withPort($.thanos.receive.service.spec.ports[1].port) +
77+
container.mixin.readinessProbe.httpGet.withScheme('HTTP') +
78+
container.mixin.readinessProbe.httpGet.withPath('/-/ready');
6879

6980
sts.new(tr.name, tr.replicas, c, [], $.thanos.receive.statefulSet.metadata.labels) +
7081
sts.mixin.metadata.withNamespace(tr.namespace) +
7182
sts.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.thanos.receive.statefulSet.metadata.name }) +
7283
sts.mixin.spec.withServiceName($.thanos.receive.service.metadata.name) +
7384
sts.mixin.spec.selector.withMatchLabels($.thanos.receive.statefulSet.metadata.labels) +
85+
sts.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120) +
7486
sts.mixin.spec.template.spec.withVolumes([
7587
volume.fromEmptyDir('data'),
7688
]) +

Diff for: jsonnet/kube-thanos/kube-thanos-store.libsonnet

+13-1
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,25 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
6464
container.withVolumeMounts([
6565
containerVolumeMount.new(ts.name + '-data', '/var/thanos/store', false),
6666
]) +
67-
container.mixin.readinessProbe.httpGet.withPort($.thanos.store.service.spec.ports[1].port).withScheme('HTTP').withPath('/-/ready');
67+
container.mixin.livenessProbe +
68+
container.mixin.livenessProbe.withPeriodSeconds(30) +
69+
container.mixin.livenessProbe.withFailureThreshold(4) +
70+
container.mixin.livenessProbe.httpGet.withPort($.thanos.store.service.spec.ports[1].port) +
71+
container.mixin.livenessProbe.httpGet.withScheme('HTTP') +
72+
container.mixin.livenessProbe.httpGet.withPath('/-/healthy') +
73+
container.mixin.readinessProbe +
74+
container.mixin.readinessProbe.withInitialDelaySeconds(10) +
75+
container.mixin.readinessProbe.withPeriodSeconds(30) +
76+
container.mixin.readinessProbe.httpGet.withPort($.thanos.store.service.spec.ports[1].port) +
77+
container.mixin.readinessProbe.httpGet.withScheme('HTTP') +
78+
container.mixin.readinessProbe.httpGet.withPath('/-/ready');
6879

6980
sts.new(ts.name, ts.replicas, c, [], $.thanos.store.statefulSet.metadata.labels) +
7081
sts.mixin.metadata.withNamespace(ts.namespace) +
7182
sts.mixin.metadata.withLabels({ 'app.kubernetes.io/name': ts.name }) +
7283
sts.mixin.spec.withServiceName($.thanos.store.service.metadata.name) +
7384
sts.mixin.spec.selector.withMatchLabels($.thanos.store.statefulSet.metadata.labels) +
85+
sts.mixin.spec.template.spec.withTerminationGracePeriodSeconds(120) +
7486
sts.mixin.spec.template.spec.withVolumes([
7587
volume.fromEmptyDir(ts.name + '-data'),
7688
]) +

Diff for: manifests/thanos-querier-deployment.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ spec:
2323
- --http-address=0.0.0.0:9090
2424
- --store=dnssrv+_grpc._tcp.thanos-store.monitoring.svc.cluster.local
2525
image: quay.io/thanos/thanos:v0.9.0
26+
livenessProbe:
27+
failureThreshold: 4
28+
httpGet:
29+
path: /-/healthy
30+
port: 9090
31+
scheme: HTTP
32+
periodSeconds: 30
2633
name: thanos-querier
2734
ports:
2835
- containerPort: 10901
@@ -34,10 +41,13 @@ spec:
3441
path: /-/ready
3542
port: 9090
3643
scheme: HTTP
44+
initialDelaySeconds: 10
45+
periodSeconds: 30
3746
resources:
3847
limits:
3948
cpu: "1"
4049
memory: 1Gi
4150
requests:
4251
cpu: 100m
4352
memory: 256Mi
53+
terminationGracePeriodSeconds: 120

Diff for: manifests/thanos-store-statefulSet.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ spec:
3030
key: thanos.yaml
3131
name: thanos-objectstorage
3232
image: quay.io/thanos/thanos:v0.9.0
33+
livenessProbe:
34+
failureThreshold: 4
35+
httpGet:
36+
path: /-/healthy
37+
port: 10902
38+
scheme: HTTP
39+
periodSeconds: 30
3340
name: thanos-store
3441
ports:
3542
- containerPort: 10901
@@ -41,6 +48,8 @@ spec:
4148
path: /-/ready
4249
port: 10902
4350
scheme: HTTP
51+
initialDelaySeconds: 10
52+
periodSeconds: 30
4453
resources:
4554
limits:
4655
cpu: "2"
@@ -52,6 +61,7 @@ spec:
5261
- mountPath: /var/thanos/store
5362
name: thanos-store-data
5463
readOnly: false
64+
terminationGracePeriodSeconds: 120
5565
volumes:
5666
- emptyDir: {}
5767
name: thanos-store-data

0 commit comments

Comments
 (0)