《Kubernetes监控篇:kubernetes集群SSL证书监控实战》

文章目录

  • 一、背景
  • 二、部署方案
  • 三、部署ssl-exporter
    • 3.1、资源下载
    • 3.2、资源说明
    • 3.3、部署ssl-exporter
  • 四、部署Prometheus
    • 3.1、资源下载
    • 3.2、资源说明
    • 3.3、部署Prometheus
  • 五、导入ssl-exporter数据源
  • 六、导入Grafana模板
  • 七、钉钉告警通知
  • 总结:整理不易,如果对你有帮助,可否点赞关注一下?


一、背景

使用kubeadm搭建的集群默认证书有效期是1年,续约证书是一件很简单且很快的事情,但是一般运维工程师工作比较繁琐,可能会忽略这方面的问题,所以监控证书的有效期就是一件非常有必要的事情了。

请参考:《Kubernetes监控篇:Prometheus+Grafana+Alertmanager监控K8S集群实战》

部署前请参考如下链接,这里的部署文档是基于上述环境。


二、部署方案

kubernetes集群SSL证书监控方案根据本人的了解主要有两种,有可能有其他的方案,如果有你也可以在下方评论区一起讨论。

1、使用ssl-exporter
2、使用X509 Certificate Exporter

这里就主要介绍第一种方案,关于第二种方案X509 Certificate Exporter,你也可以进入github进行了解。


三、部署ssl-exporter

3.1、资源下载

1、如果当前的环境是基于上述环境,请下载如下链接: K8S集群ssl证书监控ssl-exporter资源清单及镜像文件

部分内容如下所示:
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第1张图片
2、如果当前的环境不是基于上述环境,请下载如下链接:K8S集群ssl证书监控ssl-exporter资源清单文件及镜像文件

部分内容如下所示:
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第2张图片
说明:两种资源主要的区别是一个是基于之前环境的namespace及serviceaccount,一个是自己手动创建的namespace及serviceaccount。


3.2、资源说明

1、可以根据实际起情况下载资源文件,yaml文件一般情况下无需做任何调整,开箱即用。
2、镜像文件已经下载在images目录下。
3、部署请参考README.txt。


3.3、部署ssl-exporter

#1、将镜像导入到所有K8S集群主机上,master节点和worker节点
[root@k8s-master-227 ssl-exporter]# docker load -i node-cert-exporter.tar.gz

#2、在master节点上执行yaml文件部署
[root@k8s-master-227 ssl-exporter]# kubectl apply -f .

如下图所示:
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第3张图片


四、部署Prometheus

3.1、资源下载

K8S主机Prometheus监控ssl证书资源清单及镜像文件

亲自整理手动编写,资源列表如下所示:
在这里插入图片描述
configmap文件部分类容如下所示:
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第4张图片
说明:资源里的yaml文件里花了大量时间整理并做了详细的注释,这里由于文件内容过多,无法一一展示,仅部分内容展示,如果需要全部资料,请通过上述链接下载。


3.2、资源说明

说明:部署前请仔细查看yaml文件,并根据自己环境实际情况对一些参数进行修改。

1、修改claim.yaml文件中的storage: 20Gi,建议根据实际情况填写存储大小空间,nfs不支持pvc在线扩容,生成环境一定要谨慎评估,条件允许情况下建议使用分布式存储ceph,支持在线扩容pvc。
2、修改configmap.yaml文件,[“192.168.1.227:9001”,“192.168.1.227:9002”,“192.168.1.227:9003”],这里配置的是alertmanager服务的ip和监听端口,当前环境因为是服务器有限,部署为同一台主机,建议生成环境分三台主机部署alertmanager,并根据实际情况填写。
3、修改service.yaml文件,默认nodePort: 32000,必须设置为service-node-port-range范围之内,根据实际情况修改,这里采用NodePort方式暴露端口让prometheus服务可以被集群外部访问。默认targets: [‘192.168.1.227:9117’,‘192.168.1.135:9117’,‘192.168.1.174:9117’,‘192.168.1.243:9117’],这里配置的是node-cert-exporter服务的ip和端口。
4、yaml文件定义的namespace是kube-monitor,如果你不太会修改yaml文件,建议不要修改,因为涉及到的不仅仅是prometheus-ssl-exporter,其它所有的服务我这里都是统一放到kube-monitor名称空间下的,方便查看及统一标准。
5、告警规则文件参考https://awesome-prometheus-alerts.grep.to/rules,可直接搜索node-exporter会出现关于node-exporter指标的监控规则内容。


3.3、部署Prometheus

1、执行yaml文件
在这里插入图片描述
2、查看prometheus服务
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第5张图片
3、浏览器输入http://192.168.1.243:32003,查看target
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第6张图片
4、查看Alerts
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第7张图片
5、alert指标参数详解

1、ca证书监控,有效期默认一般为1年
ca.crt
front-proxy-ca.crt

2、非ca证书监控,有效期默认一般为10年
apiserver.crt
peer.crt
server.crt
apiserver-etcd-client.crt
apiserver-etcd-client.crt
front-proxy-client.crt
apiserver-kubelet-client.crt

6、查看监控数据
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第8张图片
说明:如上所示则表明Prometheus已经采集到了ssl-exporter相关数据。


五、导入ssl-exporter数据源

说明:在Grafana中添加 DataSource,域名使用service name prometheus-ssl-exporter即可,这样可以通过内网去访问,即使prometheus-ssl-exporter调度到另外一台主机也不影响数据的接入。

service name如下图红色箭头所示:
在这里插入图片描述
http url如下图所示:
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第9张图片


六、导入Grafana模板

说明:这里采用的是K8S集群主机资源监控ssl-exporter监控模板是本人根据自己的喜好和环境编辑而成。

效果如下图所示:
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第10张图片


七、钉钉告警通知

告警信息通知,如下图所示:
《Kubernetes监控篇:kubernetes集群SSL证书监控实战》_第11张图片


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

你可能感兴趣的:(《企业级K8s集群运维实战》,kubernetes,ssl,python)