Etcd 是 Kubernetes 内部核心组件之一,作为分布式键值存储,天然支持 Prometheus 监控,自带 /metrics
端点,可直接被 Prometheus 抓取。
Etcd监控需要使用到证书。
一、检查云原生Etcd
检查节点上的Etcd
[root@k8s-master01 manifests]#netstat -lnpt |grep etcd
tcp 0 0 10.1.3.31:2379 0.0.0.0:* LISTEN 1408/etcd
tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN 1408/etcd
tcp 0 0 10.1.3.31:2380 0.0.0.0:* LISTEN 1408/etcd
[root@k8s-master01 ~]#curl 10.1.3.31:2379/metrics
curl: (52) Empty reply from server
# 强制使用加密协议https,但是使用https就要使用证书。
测试访问 Etcd Metrics 接口:
[root@k8s-master01 manifests]#curl -s --cert /etc/kubernetes/pki/etcd/etcd.pem --key /etc/kubernetes/pki/etcd/etcd-key.pem https://10.1.3.31:2379/metrics -k | tail -1
promhttp_metric_handler_requests_total{
code="503"} 0
# 注意,IP地址为etcd的地址,此处随master主机节点安装,没有单独安装。
查看证书
证书的位置可以在 Etcd 配置文件中获得(注意配置文件的位置,不同的集群位置可能不同,Kubeadm 安装方式可能会在/etc/kubernetes/manifests/etcd.yml 中):
# 查看证书
[root@k8s-master01 manifests]# grep -E "key-file|cert-file" /etc/etcd/etcd.config.yml
cert-file: '/etc/kubernetes/pki/etcd/etcd.pem'
key-file: '/etc/kubernetes/pki/etcd/etcd-key.pem'
cert-file: '/etc/kubernetes/pki/etcd/etcd.pem'
key-file: '/etc/kubernetes/pki/etcd/etcd-key.pem'
检查有没有创建etcd的service
[root@k8s-master01 ~]#kubectl get svc -A | grep etcd
[root@k8s-master01 ~]#
#空的,没有创建,二进制安装没有
二、创建Etcd 的 Service 和 Endpoint
首先需要配置 Etcd 的 Service 和 Endpoint:
# vim etcd-svc.yaml
apiVersion: v1
kind: Endpoints
metadata:
labels:
app: etcd-prom
name: etcd-prom
namespace: kube-system
subsets:
- addresses:
- ip: YOUR_ETCD_IP01
- ip: YOUR_ETCD_IP02
- ip: YOUR_ETCD_IP03
ports:
- name: https-metrics
port: 2379 # etcd 端口
protocol: TCP