prometheus-operator 默认部署 2 个 prometheus POD,并且被优先调度到 master 节点。
2 个 prometheus 实例
查看 prometheus CRD 对象的定义,能够看出,部署了 2 个实例:
# vi prometheus-prometheus.yaml
......
image: "178.104.162.39:443/dev/huayun/amd64/prometheus:v2.20.0"
......
replicas: 2
......
在 kubernetes 集群中,prometheus 以 statefulset 形式部署:
# kubectl get all -n monitoring |grep prometheus-k8s
pod/prometheus-k8s-0 3/3 Running 1 19d
pod/prometheus-k8s-1 3/3 Running 1 19d
service/prometheus-k8s NodePort 10.233.50.253 <none> 9090:32500/TCP 20d
statefulset.apps/prometheus-k8s 2/2 20d
2 个 prometheus 实例的关系
两个 prometheus 实例是 独立、对等的关系,相互之间并不感知。
- scrape 对象雷同:prometheus.yaml 内容统一;
- alertmanager 的配置雷同:当有告警时,2 个 prometheus 实例同时发送到 alertmanager,alertmanager 集群会进行 告警的去重;
若两个实例都配置了 remote_write 到 influxdb,则每份指标会存入 influxdb 两次,然而会用 prometheus_replica 辨别是来自哪个实例: