vincentgao 1、背景 基于kubesphere最小化安装,ks默认不开启对etcd的监控,那么对于外部的etcd集群我们如何对接到ks里面来呢。 这篇文档接我上一篇排查apiserver监控的文章,最好先过目下:https://kubesphere.com.cn/forum/d/1374-kube-apisrever-kubesphere 2、对接方法 首先,老规矩查看prometheus server的配置,看看默认对于etcd是怎样监控的,容器中查看配置: 可以看到,还是使用的endpoints的方式来自动发现并监控的,并且是https的方式,这里的证书配置都写死了。好吧,写死了不要紧,你得看看这个证书配置是怎么挂载到容器里面的,直接在ks控制台查看prometheus-k8s-system服务的配置文件: OK,我们这个证书的目录竟然来自于一个secret,吱吱,原来如此,那就一查到底: 明白了吧,也就是说,这个secret是必须要存在的,到这里就清楚了吧,如何加上etcd监控,利用etcd的证书创建个secret就行: 但是同志,这样还是不行的,我的是最小化安装也就是说我之前部署ks的yaml文件是没有开启etcd监控的,我记得配置默认关于etcd是这样的: 这里的ip我估计是你如果采用ks来部署etcd,默认给你的etcd三个service ip,这里是写死的(我猜的,不知道对不对),然后我们改成如下的配置: 三个ip替换成你自己的etcd集群IP,另外修改monitoring: True即可,好了到这里就完事了,我们修改一下ks-install的配置就行,k8s会自动帮我们重新部署,在这里修改即可哦: 耐心等待安装完成后,我们查看集群的监控配置: 开启了etcd的service monitor: 看看etcd monitor对应的svc是啥: 在kube-system里面: 好了,我们看看界面上的监控效果: 3、注意 有些同学可能会问,要是我的外部etcd集群用的是http呢,还需要创建么,需要的,因为这个配置写死了,我们创建一个空的secret就行,其余的操作不变: kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs 4、总结 如果懂得了prometheus在k8s上的实践原理,自动发现机制,其实没啥难度的,任何看起来高大上的东西都构建在基础知识之上,了解运行机制,就能举一反三。
xuanyuanaosheng vincentgao 看了这篇帖子收益匪浅, 请问能介绍下怎么改造 kubesphere 3.0 么? # kubectl get endpoints,svc -n kube-system | grep etcd endpoints/etcd 10.67.39.198:2379,10.67.39.199:2379,10.67.39.200:2379 28d endpoints/prometheus-kube-prometheus-kube-etcd 10.67.39.198:2379,10.67.39.199:2379,10.67.39.200:2379 60d service/etcd ClusterIP None <none> 2379/TCP 28d service/prometheus-kube-prometheus-kube-etcd ClusterIP None <none> 2379/TCP 60d