Skip to content

Commit 6f079e3

Browse files
committed
fix linux node exporter
1 parent 6b7d01a commit 6f079e3

File tree

4 files changed

+115
-92
lines changed

4 files changed

+115
-92
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: monitoring.coreos.com/v1
2+
kind: PodMonitor
3+
metadata:
4+
name: node-exporter
5+
namespace: monitoring
6+
labels:
7+
app: node-exporter # must match your Prometheus CR's `podMonitorSelector`
8+
spec:
9+
selector:
10+
matchLabels:
11+
app: node-exporter
12+
namespaceSelector:
13+
matchNames:
14+
- monitoring
15+
podMetricsEndpoints:
16+
- port: metrics
17+
path: /metrics
18+
interval: 5s
19+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: node-exporter
5+
namespace: monitoring
6+
---
7+
apiVersion: rbac.authorization.k8s.io/v1
8+
kind: ClusterRole
9+
metadata:
10+
name: node-exporter
11+
rules:
12+
- apiGroups: [""]
13+
resources:
14+
- nodes
15+
- nodes/proxy
16+
- services
17+
- endpoints
18+
- pods
19+
verbs: ["get", "list", "watch"]
20+
- apiGroups: [""]
21+
resources:
22+
- nodes/metrics
23+
verbs: ["get"]
24+
---
25+
apiVersion: rbac.authorization.k8s.io/v1
26+
kind: ClusterRoleBinding
27+
metadata:
28+
name: node-exporter
29+
roleRef:
30+
apiGroup: rbac.authorization.k8s.io
31+
kind: ClusterRole
32+
name: node-exporter
33+
subjects:
34+
- kind: ServiceAccount
35+
name: node-exporter
36+
namespace: monitoring
37+
---
38+
apiVersion: apps/v1
39+
kind: DaemonSet
40+
metadata:
41+
name: node-exporter
42+
namespace: monitoring
43+
labels:
44+
app: node-exporter
45+
spec:
46+
selector:
47+
matchLabels:
48+
app: node-exporter
49+
template:
50+
metadata:
51+
labels:
52+
app: node-exporter
53+
spec:
54+
serviceAccountName: node-exporter
55+
hostNetwork: true
56+
hostPID: true
57+
containers:
58+
- name: node-exporter
59+
image: quay.io/prometheus/node-exporter:latest
60+
args:
61+
- "--path.procfs=/host/proc"
62+
- "--path.sysfs=/host/sys"
63+
- "--collector.disable-defaults"
64+
- "--collector.cpu"
65+
- "--collector.meminfo"
66+
- "--collector.loadavg"
67+
- "--collector.stat"
68+
ports:
69+
- containerPort: 9100
70+
hostPort: 9100
71+
name: metrics
72+
resources:
73+
limits:
74+
memory: 100Mi
75+
requests:
76+
cpu: 100m
77+
memory: 50Mi
78+
volumeMounts:
79+
- name: proc
80+
mountPath: /host/proc
81+
readOnly: true
82+
- name: sys
83+
mountPath: /host/sys
84+
readOnly: true
85+
nodeSelector:
86+
kubernetes.io/os: linux
87+
volumes:
88+
- name: proc
89+
hostPath:
90+
path: /proc
91+
- name: sys
92+
hostPath:
93+
path: /sys
94+
terminationGracePeriodSeconds: 30

clusterloader2/pkg/prometheus/manifests/exporters/node_exporter/node-exporter.yaml

Lines changed: 0 additions & 49 deletions
This file was deleted.

clusterloader2/pkg/prometheus/prometheus.go

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"sync"
2828
"time"
2929

30-
"golang.org/x/sync/errgroup"
3130
corev1 "k8s.io/api/core/v1"
3231
rbacv1 "k8s.io/api/rbac/v1"
3332
apierrs "k8s.io/apimachinery/pkg/api/errors"
@@ -56,7 +55,7 @@ const (
5655
kubeStateMetricsManifests = "exporters/kube-state-metrics/*.yaml"
5756
masterIPServiceMonitors = "master-ip/*.yaml"
5857
metricsServerManifests = "exporters/metrics-server/*.yaml"
59-
nodeExporterPod = "exporters/node_exporter/node-exporter.yaml"
58+
nodeExporterManifests = "exporters/node_exporter/*.yaml"
6059
windowsNodeExporterManifests = "exporters/windows_node_exporter/*.yaml"
6160
pushgatewayManifests = "pushgateway/*.yaml"
6261
)
@@ -236,7 +235,7 @@ func (pc *Controller) SetUpPrometheusStack() error {
236235
return err
237236
}
238237
if pc.clusterLoaderConfig.PrometheusConfig.ScrapeNodeExporter {
239-
if err := pc.runNodeExporter(); err != nil {
238+
if err := pc.applyDefaultManifests(nodeExporterManifests); err != nil {
240239
return err
241240
}
242241
}
@@ -395,46 +394,6 @@ func (pc *Controller) exposeAPIServerMetrics() error {
395394
return nil
396395
}
397396

398-
// runNodeExporter adds node-exporter as master's static manifest pod.
399-
// TODO(mborsz): Consider migrating to something less ugly, e.g. daemonset-based approach,
400-
// when master nodes have configured networking.
401-
func (pc *Controller) runNodeExporter() error {
402-
klog.V(2).Infof("Starting node-exporter on master nodes.")
403-
kubemarkFramework, err := framework.NewFramework(&pc.clusterLoaderConfig.ClusterConfig, numK8sClients)
404-
if err != nil {
405-
return err
406-
}
407-
408-
// Validate masters first
409-
nodes, err := client.ListNodes(kubemarkFramework.GetClientSets().GetClient())
410-
if err != nil {
411-
return err
412-
}
413-
414-
var g errgroup.Group
415-
numMasters := 0
416-
for _, node := range nodes {
417-
node := node
418-
if util.LegacyIsMasterNode(&node) || util.IsControlPlaneNode(&node) {
419-
numMasters++
420-
g.Go(func() error {
421-
f, err := manifestsFS.Open(nodeExporterPod)
422-
if err != nil {
423-
return fmt.Errorf("unable to open manifest file: %v", err)
424-
}
425-
defer f.Close()
426-
return pc.ssh.Exec("sudo tee /etc/kubernetes/manifests/node-exporter.yaml > /dev/null", &node, f)
427-
})
428-
}
429-
}
430-
431-
if numMasters == 0 {
432-
return fmt.Errorf("node-exporter requires master to be registered nodes")
433-
}
434-
435-
return g.Wait()
436-
}
437-
438397
func (pc *Controller) waitForPrometheusToBeHealthy() error {
439398
klog.V(2).Info("Waiting for Prometheus stack to become healthy...")
440399
return wait.PollImmediate(

0 commit comments

Comments
 (0)