title: 8.3.etcd监控
order: 45
icon: lightbulb
一、环境
主机名 | IP地址 | 系统 | 说明 |
k8s | 192.168.11.65 | Ubuntu 20.04 | k8s版本:v1.23.10 单机版本 |
准备环境
使用kube-prometheus-stack安装好prometheus,并对整个K8S集群做好监控。
二、etcd监控
1、获取etcd证书
etcd 证书
对于 etcd 集群一般情况下,为了安全都会开启 https 证书认证的方式,所以要想让 Prometheus 访问到 etcd 集群的监控数据,就需要提供相应的证书校验
证书路径:
vim /etc/kubernetes/manifests/kube-apiserver.yaml
得到
- --etcd-cafile=/etc/ssl/etcd/ssl/ca.pem
- --etcd-certfile=/etc/ssl/etcd/ssl/node-k8s.pem
- --etcd-keyfile=/etc/ssl/etcd/ssl/node-k8s-key.pem
- --etcd-servers=https://192.168.11.65:2379
可以看到是跟计算机名有关系的。
通过curl检查
curl -k --cacert /etc/ssl/etcd/ssl/ca.pem --cert /etc/ssl/etcd/ssl/node-k8s.pem --key /etc/ssl/etcd/ssl/node-k8s-key.pem https://localhost:2379/metrics
说明etcd 自带metrics(监控样本数据)
2、创建secret(保密字典)
pem
文件根据实际修改
kubectl -n monitoring create secret generic etcd-certs \
--from-file=/etc/ssl/etcd/ssl/ca.pem \
--from-file=/etc/ssl/etcd/ssl/node-k8s.pem \
--from-file=/etc/ssl/etcd/ssl/node-k8s-key.pem
检查
kubectl -n monitoring get secret etcd-certs -oyaml
3、kube-prometheus-stack开启etcd监控
修改配置文件
- 开启etcd监控
vim kube-prometheus-stack/values.yaml
修改如下:
kubeEtcd:
enabled: true
endpoints:
#因为我们的etcd安装到宿主机上的,所以要指定宿主机ip,ip根据实际修改。
- 192.168.11.65
service:
enabled: true
#注,我的etcd端口为2379,根据实际修改
port: 2379
targetPort: 2379
serviceMonitor:
enabled: true
#https请求
scheme: https
insecureSkipVerify: true
serverName: ""
#指定证路径
caFile: "/etc/prometheus/secrets/etcd-certs/ca.pem"
certFile: "/etc/prometheus/secrets/etcd-certs/node-k8s.pem"
keyFile: "/etc/prometheus/secrets/etcd-certs/node-k8s-key.pem"
prometheusSpec:
#把secret挂载到prometheus的pod里面
volumes:
- name: cert-vol
secret:
secretName: etcd-certs
volumeMounts:
- name: cert-vol
mountPath: "/etc/prometheus/secrets/etcd-certs"
readOnly: true
更新配置
删除服务prometheus-kube-prometheus-kube-etcd
kubectl delete svc prometheus-kube-prometheus-kube-etcd -n kube-system
在执行更新
helm upgrade prometheus -n monitoring kube-prometheus-stack
检查
更新完成后,在 Prometheus 的 Pod 中检查 etcd 证书是否挂载成功
root@k8s:~# kubectl get pod -n monitoring
NAME READY STATUS RESTARTS AGE
prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 53s
进入pod,检查
#进入pod
kubectl exec -it prometheus-prometheus-kube-prometheus-prometheus-0 -n monitoring -- sh
#查看
ls /etc/prometheus/secrets/etcd-certs/
ca.pem node-k8s-key.pem node-k8s.pem #没有问题
4、配置访问地址
因为prometheus重启过,所以之前的9090映射关闭了
kubectl port-forward --address=0.0.0.0 svc/prometheus-kube-prometheus-prometheus -n monitoring 9090:9090 &
kubectl port-forward --address=0.0.0.0 svc/prometheus-grafana -n monitoring 3000:80 &
5、检查
http://192.168.11.65:9090/targets?search=
http://192.168.11.65:3000/dashboards
6、碰到的问题
更新配置时报错如下:
helm upgrade prometheus -n monitoring kube-prometheus-stack
解决:
删除报错的service
kubectl delete svc prometheus-kube-prometheus-kube-etcd -n kube-system
三、我的微信
如果碰到问题,可以随时加我微信,谢谢
评论区