1. 跳过证书校验无法获取监控
如果指标抓取时,能跳过 TLS 认证是最便捷的。其 Prometheus 的 ConfigMap 配置如下:
|
| - job_name: etcd | | metrics_path: /metrics | | scheme: https | | tls_config: | | insecure_skip_verify: true | | static_configs: | | - targets: [ '1.1.1.1:2379' ] | | - targets: [ '2.2.2.2:2379' ] | | - targets: [ '3.3.3.3:2379' ] |
|
但 Prometheus Targets 报错 Get "https://3.3.3.3:2379/metrics": remote error: tls: bad certificate
在 targets 页面的报错如下图:

2. curl 验证抓取请求
|
| curl https://1.1.1.1:2379/metrics -k | | | | curl: (35) error:1401E412:SSL routines:CONNECT_CR_FINISHED:sslv3 alert bad certificate |
|
这个报错没找到解法,于是直接换成了需要 TLS 的方式。
1
|
curl https://1.1.1.1:2379/metrics --cacert /etc/ssl/etcd/ssl/ca.pem --cert /etc/ssl/etcd/ssl/node-node1.pem --key /etc/ssl/etcd/ssl/node-node1-key.pem
|
成功返回 Metrics 数据。
这里的 node-node1.pem
证书应该包含全部 Etcd 节点 IP 的域。可以通过 openssl x509 -noout -text -in /etc/ssl/etcd/ssl/node-node1.pem
查看证书相关信息。
3. 给集群 Prometheus 新增 Etcd TLS 抓取
1
|
kubectl -n monitor create secret generic etcd-certs --from-file=/etc/ssl/etcd/ssl/ca.pem --from-file=/etc/ssl/etcd/ssl/node-node1.pem --from-file /etc/ssl/etcd/ssl/node-node1-key.pem
|
这里的证书就是上面 curl 验证过的证书。
1
|
kubectl -n monitor edit deployments.apps prometheus-server
|
新增如下两部分内容:
|
| volumeMounts: | | - mountPath: /var/run/secrets/kubernetes.io/k8s-certs/etcd/ | | name: k8s-certs |
|
|
| volumes: | | - name: k8s-certs | | secret: | | secretName: etcd-certs | | |
|
- 在 ConfigMap 中添加抓取 Etcd 指标的 Job
1
|
kubectl -n monitor edit cm prometheus-server
|
|
| - job_name: etcd | | metrics_path: /metrics | | scheme: https | | tls_config: | | ca_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/ca.pem | | cert_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/node-node1.pem | | key_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/node-node1-key.pem | | static_configs: | | - targets: [ '1.1.1.1:2379' ] | | - targets: [ '2.2.2.2:2379' ] | | - targets: [ '3.3.3.3:2379' ] |
|
此时,在 Prometheus 中,应该可以看到抓取 Etcd 监控数据的 Job 状态为 Up,如下图:

4. 导入 Grafana 面板查看监控数据
在 Grafana 中导入面板 3070,即 https://grafana.com/grafana/dashboards/3070-etcd/ ,就可以看到如下监控视图:
