【问题标题】:Access etcd metrics for Prometheus访问 Prometheus 的 etcd 指标
【发布时间】:2019-11-29 10:43:05
【问题描述】:
我已经使用 Kube Spray 建立了一个 v1.13 Kubernetes 集群。
我们的 etcd 在 K8s 集群之外作为 docker 容器运行。如果我检查 etcd 证书,我可以看到每个 etcd 都有自己的 ca、客户端证书和密钥。
如果我想为 Prometheus 抓取这些 etcd 容器的 /metrics 端点,哪些证书用于 HTTPS 端点?
【问题讨论】:
标签:
kubernetes
prometheus
etcd
【解决方案1】:
我还不确定这是否是最安全的方式。
但我拿走了其中一个 etcd 使用的 ca.pem、证书和密钥。
我从三个中创建了一个 Kubernetes 秘密对象:
kubectl create secret generic etcd-metrics -n monitoring --from-file=etcd-secrets/
然后我将秘密添加为 Prometheus 配置中的 configmaps 以及下面作为我的抓取
targets:
- job_name: etcd
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: https
static_configs:
- targets:
- 172.xxxxx:2379
- 172.xxxxx:2379
- 172.xxxxx:2379
tls_config:
ca_file: /etc/ssl/etcd/ca.pem
cert_file: /etc/ssl/etcd/etcd-node.pem
key_file: /etc/ssl/etcd/etcd-key.pem
insecure_skip_verify: false
【解决方案2】:
虽然不完全符合您的要求,但我通过使用在监听 etcd's prometheus port :9379 的边车容器中运行的 socat 将身份验证推送到实际机器上取得了巨大成功,然后您可以将 prometheus 指向 http://${etcd_hostname}:9379/metrics 而无需处理这些指标端点的身份验证。
我面前没有 socat 调用,但类似:
socat tc4-listen:9379,reuseaddr,fork \
openssl:127.0.0.1:2379,capath=/etc/kubernetes/pki/etcd/cacert.crt,key=/etc/kubernetes/pki/etcd/peer.key,cert=/etc/kubernetes/pki/etcd/peer.crt