Skip to content

Commit e5ba57e

Browse files
authored
Merge pull request #35 from Yolean/resource-limits
Apply resource limits based on tests with little load
2 parents 49865bc + 1344238 commit e5ba57e

File tree

5 files changed

+74
-20
lines changed

5 files changed

+74
-20
lines changed

50kafka.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ spec:
2020
image: solsson/kafka-prometheus-jmx-exporter@sha256:1f7c96c287a2dbec1d909cd8f96c0656310239b55a9a90d7fd12c81f384f1f7d
2121
ports:
2222
- containerPort: 5556
23+
resources:
24+
requests:
25+
cpu: 0m
26+
memory: 40Mi
27+
limits:
28+
cpu: 10m
29+
memory: 80Mi
2330
- name: broker
2431
image: solsson/kafka:0.11.0.0-rc2@sha256:c1316e0131f4ec83bc645ca2141e4fda94e0d28f4fb5f836e15e37a5e054bdf1
2532
env:
@@ -36,6 +43,10 @@ spec:
3643
--override log.retention.hours=-1
3744
--override log.dirs=/var/lib/kafka/data/topics
3845
--override broker.id=${HOSTNAME##*-}
46+
resources:
47+
requests:
48+
cpu: 100m
49+
memory: 512Mi
3950
volumeMounts:
4051
- name: data
4152
mountPath: /var/lib/kafka/data

README.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,6 @@ To get consistent service DNS names `kafka-N.broker.kafka`(`.svc.cluster.local`)
88
kubectl create -f 00namespace.yml
99
```
1010

11-
## Set up volume claims
12-
13-
You may add [storage class](http://kubernetes.io/docs/user-guide/persistent-volumes/#storageclasses)
14-
to the kafka StatefulSet declaration to enable automatic volume provisioning.
15-
16-
Alternatively create [PV](http://kubernetes.io/docs/user-guide/persistent-volumes/#persistent-volumes)s and [PVC](http://kubernetes.io/docs/user-guide/persistent-volumes/#persistentvolumeclaims)s manually. For example in Minikube.
17-
18-
```
19-
./bootstrap/pv.sh
20-
kubectl create -f ./10pvc.yml
21-
# check that claims are bound
22-
kubectl -n kafka get pvc
23-
```
24-
2511
## Set up Zookeeper
2612

2713
The Kafka book (Definitive Guide, O'Reilly 2016) recommends that Kafka has its own Zookeeper cluster with at least 5 instances.

test/monitoring-test.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Sets up a pod that monitors itself, to test resource usage etc.
2+
# kubectl exec test-metrics-... -- /bin/sh -c 'apk add --no-cache curl && curl http://localhost:5556/metrics'
3+
apiVersion: extensions/v1beta1
4+
kind: Deployment
5+
metadata:
6+
name: monitoring-test
7+
namespace: kafka
8+
spec:
9+
replicas: 1
10+
template:
11+
metadata:
12+
labels:
13+
app: monitoring-test
14+
# Uncomment to test with prometheus
15+
#annotations:
16+
# prometheus.io/scrape: "true"
17+
# prometheus.io/port: "5556"
18+
spec:
19+
containers:
20+
- name: monitor
21+
image: solsson/kafka-prometheus-jmx-exporter@sha256:1f7c96c287a2dbec1d909cd8f96c0656310239b55a9a90d7fd12c81f384f1f7d
22+
command:
23+
- java
24+
- -Dcom.sun.management.jmxremote.ssl=false
25+
- -Dcom.sun.management.jmxremote.authenticate=false
26+
- -Dcom.sun.management.jmxremote.port=5555
27+
- -jar
28+
- jmx_prometheus_httpserver.jar
29+
- "5556"
30+
- example_configs/httpserver_sample_config.yml
31+
ports:
32+
- name: jmx
33+
containerPort: 5555
34+
- name: slashmetrics
35+
containerPort: 5556

zookeeper/50pzoo.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,20 @@ spec:
2020
- name: metrics
2121
image: solsson/kafka-prometheus-jmx-exporter@sha256:1f7c96c287a2dbec1d909cd8f96c0656310239b55a9a90d7fd12c81f384f1f7d
2222
command:
23-
- "java"
24-
- "-jar"
25-
- "jmx_prometheus_httpserver.jar"
23+
- java
24+
- -jar
25+
- jmx_prometheus_httpserver.jar
2626
- "5556"
2727
- example_configs/zookeeper.yaml
2828
ports:
2929
- containerPort: 5556
30+
resources:
31+
requests:
32+
cpu: 0m
33+
memory: 40Mi
34+
limits:
35+
cpu: 10m
36+
memory: 80Mi
3037
- name: zookeeper
3138
image: solsson/kafka:0.11.0.0-rc2@sha256:c1316e0131f4ec83bc645ca2141e4fda94e0d28f4fb5f836e15e37a5e054bdf1
3239
env:
@@ -49,6 +56,10 @@ spec:
4956
name: peer
5057
- containerPort: 3888
5158
name: leader-election
59+
resources:
60+
requests:
61+
cpu: 10m
62+
memory: 100Mi
5263
volumeMounts:
5364
- name: config
5465
mountPath: /usr/local/kafka/config

zookeeper/51zoo.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,20 @@ spec:
2020
- name: metrics
2121
image: solsson/kafka-prometheus-jmx-exporter@sha256:1f7c96c287a2dbec1d909cd8f96c0656310239b55a9a90d7fd12c81f384f1f7d
2222
command:
23-
- "java"
24-
- "-jar"
25-
- "jmx_prometheus_httpserver.jar"
23+
- java
24+
- -jar
25+
- jmx_prometheus_httpserver.jar
2626
- "5556"
2727
- example_configs/zookeeper.yaml
2828
ports:
2929
- containerPort: 5556
30+
resources:
31+
requests:
32+
cpu: 0m
33+
memory: 40Mi
34+
limits:
35+
cpu: 10m
36+
memory: 80Mi
3037
- name: zookeeper
3138
image: solsson/kafka:0.11.0.0-rc2@sha256:c1316e0131f4ec83bc645ca2141e4fda94e0d28f4fb5f836e15e37a5e054bdf1
3239
env:
@@ -49,6 +56,10 @@ spec:
4956
name: peer
5057
- containerPort: 3888
5158
name: leader-election
59+
resources:
60+
requests:
61+
cpu: 10m
62+
memory: 100Mi
5263
volumeMounts:
5364
- name: config
5465
mountPath: /usr/local/kafka/config

0 commit comments

Comments
 (0)