一、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存储的数据,并且以图表形式展示数据了。