Skip to content

Commit 6eadca8

Browse files
authored
Merge pull request #1873 from CatherineF-dev/daemonset-sharding-example
docs: Daemonset sharding example
2 parents 8fe5180 + 5fae596 commit 6eadca8

File tree

11 files changed

+448
-21
lines changed

11 files changed

+448
-21
lines changed

Makefile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ examples/prometheus-alerting-rules/alerts.yaml: jsonnet $(shell find jsonnet | g
134134
mkdir -p examples/prometheus-alerting-rules
135135
jsonnet -J scripts/vendor scripts/mixin.jsonnet | gojsontoyaml > examples/prometheus-alerting-rules/alerts.yaml
136136

137-
examples: examples/standard examples/autosharding mixin
137+
examples: examples/standard examples/autosharding examples/daemonsetsharding mixin
138138

139139
examples/standard: jsonnet $(shell find jsonnet | grep ".libsonnet") scripts/standard.jsonnet scripts/vendor VERSION
140140
mkdir -p examples/standard
@@ -146,6 +146,11 @@ examples/autosharding: jsonnet $(shell find jsonnet | grep ".libsonnet") scripts
146146
jsonnet -J scripts/vendor -m examples/autosharding --ext-str version="$(VERSION)" scripts/autosharding.jsonnet | xargs -I{} sh -c 'cat {} | gojsontoyaml > `echo {} | sed "s/\(.\)\([A-Z]\)/\1-\2/g" | tr "[:upper:]" "[:lower:]"`.yaml' -- {}
147147
find examples -type f ! -name '*.yaml' -delete
148148

149+
examples/daemonsetsharding: jsonnet $(shell find jsonnet | grep ".libsonnet") scripts/daemonsetsharding.jsonnet scripts/vendor VERSION
150+
mkdir -p examples/daemonsetsharding
151+
jsonnet -J scripts/vendor -m examples/daemonsetsharding --ext-str version="$(VERSION)" scripts/daemonsetsharding.jsonnet | xargs -I{} sh -c 'cat {} | gojsontoyaml > `echo {} | sed "s/\(.\)\([A-Z]\)/\1-\2/g" | tr "[:upper:]" "[:lower:]"`.yaml' -- {}
152+
find examples -type f ! -name '*.yaml' -delete
153+
149154
scripts/vendor: scripts/jsonnetfile.json scripts/jsonnetfile.lock.json
150155
cd scripts && jb install
151156

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/name: kube-state-metrics
7+
app.kubernetes.io/version: 2.8.2
8+
name: kube-state-metrics
9+
roleRef:
10+
apiGroup: rbac.authorization.k8s.io
11+
kind: ClusterRole
12+
name: kube-state-metrics
13+
subjects:
14+
- kind: ServiceAccount
15+
name: kube-state-metrics
16+
namespace: kube-system
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/name: kube-state-metrics
7+
app.kubernetes.io/version: 2.8.2
8+
name: kube-state-metrics
9+
rules:
10+
- apiGroups:
11+
- ""
12+
resources:
13+
- configmaps
14+
- secrets
15+
- nodes
16+
- pods
17+
- services
18+
- serviceaccounts
19+
- resourcequotas
20+
- replicationcontrollers
21+
- limitranges
22+
- persistentvolumeclaims
23+
- persistentvolumes
24+
- namespaces
25+
- endpoints
26+
verbs:
27+
- list
28+
- watch
29+
- apiGroups:
30+
- apps
31+
resources:
32+
- statefulsets
33+
- daemonsets
34+
- deployments
35+
- replicasets
36+
verbs:
37+
- list
38+
- watch
39+
- apiGroups:
40+
- batch
41+
resources:
42+
- cronjobs
43+
- jobs
44+
verbs:
45+
- list
46+
- watch
47+
- apiGroups:
48+
- autoscaling
49+
resources:
50+
- horizontalpodautoscalers
51+
verbs:
52+
- list
53+
- watch
54+
- apiGroups:
55+
- authentication.k8s.io
56+
resources:
57+
- tokenreviews
58+
verbs:
59+
- create
60+
- apiGroups:
61+
- authorization.k8s.io
62+
resources:
63+
- subjectaccessreviews
64+
verbs:
65+
- create
66+
- apiGroups:
67+
- policy
68+
resources:
69+
- poddisruptionbudgets
70+
verbs:
71+
- list
72+
- watch
73+
- apiGroups:
74+
- certificates.k8s.io
75+
resources:
76+
- certificatesigningrequests
77+
verbs:
78+
- list
79+
- watch
80+
- apiGroups:
81+
- discovery.k8s.io
82+
resources:
83+
- endpointslices
84+
verbs:
85+
- list
86+
- watch
87+
- apiGroups:
88+
- storage.k8s.io
89+
resources:
90+
- storageclasses
91+
- volumeattachments
92+
verbs:
93+
- list
94+
- watch
95+
- apiGroups:
96+
- admissionregistration.k8s.io
97+
resources:
98+
- mutatingwebhookconfigurations
99+
- validatingwebhookconfigurations
100+
verbs:
101+
- list
102+
- watch
103+
- apiGroups:
104+
- networking.k8s.io
105+
resources:
106+
- networkpolicies
107+
- ingressclasses
108+
- ingresses
109+
verbs:
110+
- list
111+
- watch
112+
- apiGroups:
113+
- coordination.k8s.io
114+
resources:
115+
- leases
116+
verbs:
117+
- list
118+
- watch
119+
- apiGroups:
120+
- rbac.authorization.k8s.io
121+
resources:
122+
- clusterrolebindings
123+
- clusterroles
124+
- rolebindings
125+
- roles
126+
verbs:
127+
- list
128+
- watch
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/name: kube-state-metrics-shard
7+
app.kubernetes.io/version: 2.8.2
8+
name: kube-state-metrics-shard
9+
namespace: kube-system
10+
spec:
11+
clusterIP: None
12+
ports:
13+
- name: http-metrics
14+
port: 8080
15+
targetPort: http-metrics
16+
- name: telemetry
17+
port: 8081
18+
targetPort: telemetry
19+
selector:
20+
app.kubernetes.io/name: kube-state-metrics-shard
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
apiVersion: apps/v1
2+
kind: DaemonSet
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/name: kube-state-metrics-shard
7+
app.kubernetes.io/version: 2.8.2
8+
name: kube-state-metrics-shard
9+
namespace: kube-system
10+
spec:
11+
selector:
12+
matchLabels:
13+
app.kubernetes.io/name: kube-state-metrics-shard
14+
template:
15+
metadata:
16+
labels:
17+
app.kubernetes.io/component: exporter
18+
app.kubernetes.io/name: kube-state-metrics-shard
19+
app.kubernetes.io/version: 2.8.2
20+
spec:
21+
automountServiceAccountToken: true
22+
containers:
23+
- args:
24+
- --resources=pods
25+
- --node=$(NODE_NAME)
26+
env:
27+
- name: NODE_NAME
28+
valueFrom:
29+
fieldRef:
30+
apiVersion: v1
31+
fieldPath: spec.nodeName
32+
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.8.2
33+
livenessProbe:
34+
httpGet:
35+
path: /healthz
36+
port: 8080
37+
initialDelaySeconds: 5
38+
timeoutSeconds: 5
39+
name: kube-state-metrics-shard
40+
ports:
41+
- containerPort: 8080
42+
name: http-metrics
43+
- containerPort: 8081
44+
name: telemetry
45+
readinessProbe:
46+
httpGet:
47+
path: /
48+
port: 8081
49+
initialDelaySeconds: 5
50+
timeoutSeconds: 5
51+
securityContext:
52+
allowPrivilegeEscalation: false
53+
capabilities:
54+
drop:
55+
- ALL
56+
readOnlyRootFilesystem: true
57+
runAsUser: 65534
58+
nodeSelector:
59+
kubernetes.io/os: linux
60+
serviceAccountName: kube-state-metrics
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/name: kube-state-metrics
7+
app.kubernetes.io/version: 2.8.2
8+
name: kube-state-metrics
9+
namespace: kube-system
10+
spec:
11+
clusterIP: None
12+
ports:
13+
- name: http-metrics
14+
port: 8080
15+
targetPort: http-metrics
16+
- name: telemetry
17+
port: 8081
18+
targetPort: telemetry
19+
selector:
20+
app.kubernetes.io/name: kube-state-metrics
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/name: kube-state-metrics
7+
app.kubernetes.io/version: 2.8.2
8+
name: kube-state-metrics
9+
namespace: kube-system
10+
spec:
11+
replicas: 1
12+
selector:
13+
matchLabels:
14+
app.kubernetes.io/name: kube-state-metrics
15+
template:
16+
metadata:
17+
labels:
18+
app.kubernetes.io/component: exporter
19+
app.kubernetes.io/name: kube-state-metrics
20+
app.kubernetes.io/version: 2.8.2
21+
spec:
22+
automountServiceAccountToken: true
23+
containers:
24+
- args:
25+
- --resources=certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,leases,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments
26+
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.8.2
27+
livenessProbe:
28+
httpGet:
29+
path: /healthz
30+
port: 8080
31+
initialDelaySeconds: 5
32+
timeoutSeconds: 5
33+
name: kube-state-metrics
34+
ports:
35+
- containerPort: 8080
36+
name: http-metrics
37+
- containerPort: 8081
38+
name: telemetry
39+
readinessProbe:
40+
httpGet:
41+
path: /
42+
port: 8081
43+
initialDelaySeconds: 5
44+
timeoutSeconds: 5
45+
securityContext:
46+
allowPrivilegeEscalation: false
47+
capabilities:
48+
drop:
49+
- ALL
50+
readOnlyRootFilesystem: true
51+
runAsUser: 65534
52+
nodeSelector:
53+
kubernetes.io/os: linux
54+
serviceAccountName: kube-state-metrics
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
automountServiceAccountToken: false
3+
kind: ServiceAccount
4+
metadata:
5+
labels:
6+
app.kubernetes.io/component: exporter
7+
app.kubernetes.io/name: kube-state-metrics
8+
app.kubernetes.io/version: 2.8.2
9+
name: kube-state-metrics
10+
namespace: kube-system

0 commit comments

Comments
 (0)