一、node-exporter与节点机

用于收集节点机器的数据信息,那么node-exporter与节点机器的连接在哪里?
node-exporter.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: kube-system
  labels:
    k8s-app: node-exporter
spec:
  selector:
    matchLabels:
      k8s-app: node-exporter
  template:
    metadata:
      labels:
        k8s-app: node-exporter
    spec:
      containers:
      - image: prom/node-exporter
        name: node-exporter
        ports:
        - containerPort: 9100
          protocol: TCP
          name: http
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: node-exporter
  name: node-exporter
  namespace: kube-system
spec:
  ports:
  - name: http
    port: 9100
    nodePort: 31672
    protocol: TC
  type: NodePort
  selector:
    k8s-app: node-exporter

我们可以看到node-exporter的kind: DaemonSet
DaemonSet确保全部(或者一些)Node上运行一个Pod的副本。当有Node加入集群时,也会为他们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。也就是只要

kubectl create -f node-exporter.yaml

node-exporter会自动加入到k8s管理下的每个Node。自动关联无需手动关联。

二、 node-exporter与prometheus

prometheus用于存储node-exporte收集的数据,他们之间的联系在哪里呢?
首先我们可以看到node-exporter开放了端口31672
在这里插入图片描述
所以prometheus监听node-exporter的时候也要监听31672这个端口
然后我们配置node-exporter的IP是在prometheus的configmap.yaml文件中。
在这里插入图片描述
这里用公网IP和内网IP都可以访问通。区别暂时还不知道。
注意:
如果修改了configmap.yaml文件,需要做以下几步,而不是仅仅apply configmap.yaml

kubectl delete -f prometheus.svc.yml
kubectl delete -f prometheus.deploy.yml
kubectl delete -f configmap.yaml

验证prometheus服务是否已不存在

kubectl get po -A

重新创建prometheus服务

kubectl create -f configmap.yaml
kubectl create -f prometheus.deploy.yml
kubectl create -f prometheus.svc.yml
kubectl get po -n kube-system

三、prometheus与Grafana

Grafana用来展示prometheus存储的数据。他们之间的联系简单明了。
在Grafana的Data Source页面配置好prometheus的IP(master公网ip)+端口。就可以读取到prometheus存储的数据,并且以图表形式展示数据了。
在这里插入图片描述
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐