Monitoreo de nodos de Kubernetes en Prometheus

1. Análisis de métodos

  • Cada nodo necesita ser monitoreado, por lo que el tipo DaemonSet se puede usar para administrar node_exporter
  • Agregue la configuración de tolerancia del nodo (debido a la contaminación establecida en el nodo maestro actual)
  • Monte la información del archivo del sistema en la máquina host (para obtener la información del sistema del host de cada nodo)

En segundo lugar, el archivo yaml del pod

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: monitor
  labels:
    app: node-exporter
spec:
  selector:
    matchLabels:
      app: node-exporter
  template:
    metadata:
      labels:
        app: node-exporter
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      nodeSelector:
        kubernetes.io/os: linux
      containers:
      - name: node-exporter
        image: prom/node-exporter:v1.0.1
        args:
        - --web.listen-address=$(HOSTIP):9100
        - --path.procfs=/host/proc
        - --path.sysfs=/host/sys
        - --path.rootfs=/host/root
        - --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+)($|/)
        - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs)$
        ports:
        - containerPort: 9100             #对外暴露接口
        env:
        - name: HOSTIP
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
        resources:
          requests:
            cpu: 150m
            memory: 180Mi
          limits:
            cpu: 150m
            memory: 180Mi
        securityContext:
          runAsNonRoot: true
          runAsUser: 65534
        volumeMounts:
        - name: proc
          mountPath: /host/proc
        - name: sys
          mountPath: /host/sys
        - name: root
          mountPath: /host/root
          mountPropagation: HostToContainer
          readOnly: true
      tolerations:
      - operator: "Exists"       #设置亏点
      volumes:
      - name: proc
        hostPath:
          path: /proc
      - name: dev
        hostPath:
          path: /dev
      - name: sys
        hostPath:
          path: /sys
      - name: root
        hostPath:
          path: /

Monitoreo de nodos de Kubernetes en Prometheus

Tres, sobre cómo conectar los datos de monitoreo de cada nodo a Prometheus

Método 1: agregue el servicio de cada exportador de nodos a la lista de destino mediante configuración estática, como:

    - job_name: 'k8s-slave1'
      static_configs:
      - targets: ['10.3.153.201:9100']

Monitoreo de nodos de Kubernetes en Prometheus

Los problemas causados ​​por los métodos anteriores:

* 集群节点的增删,都需要手动维护列表
* target列表维护量随着集群规模增加

Método 2: configurar un servicio, montar el servicio exportador de nodos en el backend y configurar la dirección del servicio para el destino, como por ejemplo:

Trayendo nuevos problemas, el estado del exportador de nodos de cada nodo no se puede ver visualmente en el objetivo

Supongo que te gusta

Origin blog.51cto.com/12965094/2679472
Recomendado
Clasificación