--- apiVersion: v1 kind: ServiceAccount metadata: name: node-exporter namespace: monitoring --- apiVersion: apps/v1 kind: DaemonSet metadata: name: node-exporter namespace: monitoring labels: app: node-exporter spec: selector: matchLabels: app: node-exporter template: metadata: labels: app: node-exporter annotations: prometheus.io/scrape: "true" prometheus.io/port: "9100" spec: serviceAccountName: node-exporter hostNetwork: true hostPID: true tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule containers: - name: node-exporter image: prom/node-exporter:v1.7.0 args: - "--path.procfs=/host/proc" - "--path.sysfs=/host/sys" - "--path.rootfs=/host/root" - "--web.listen-address=:9100" - "--collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/)" - "--collector.netclass.ignored-devices=^(veth.*|cali.*|docker.*|flannel.*)$" ports: - name: metrics containerPort: 9100 hostPort: 9100 protocol: TCP resources: requests: memory: "20Mi" cpu: "10m" limits: memory: "50Mi" cpu: "100m" securityContext: runAsNonRoot: true runAsUser: 65534 volumeMounts: - name: proc mountPath: /host/proc readOnly: true - name: sys mountPath: /host/sys readOnly: true - name: root mountPath: /host/root readOnly: true mountPropagation: HostToContainer livenessProbe: httpGet: path: / port: metrics initialDelaySeconds: 5 periodSeconds: 15 readinessProbe: httpGet: path: / port: metrics initialDelaySeconds: 5 periodSeconds: 15 volumes: - name: proc hostPath: path: /proc - name: sys hostPath: path: /sys - name: root hostPath: path: / --- apiVersion: v1 kind: Service metadata: name: node-exporter namespace: monitoring labels: app: node-exporter annotations: prometheus.io/scrape: "true" prometheus.io/port: "9100" spec: type: ClusterIP clusterIP: None ports: - name: metrics port: 9100 targetPort: 9100 protocol: TCP selector: app: node-exporter