巧用 Prometheus 监控 Kubernetes 集群所有组件的证书
KubeSphere 虽然提供了运维友好的向导式操作界面,简化了 Kubernetes 的运维操作,但它还是建立在底层 Kubernetes 之上的,Kubernetes 默认的证书有效期都是一年,即使使用 KubeKey[1] 这样的集群安装利器也不能改变这个结果。如果不想办法对 Kubernetes 各个组件的证书有效期进行监控,说不定哪天就会掉进坑里。
有部分读者可能听说过 ssl-exporter[2] 这个项目,它能提供多种针对 SSL 的检测手段,包括:HTTPS 证书、文件证书、Kubernetes Secret、Kubeconfig 文件。从功能上来看,它基本可以满足上述需求,但它的指标还不够丰富,本文将介绍一个更为强大的 Prometheus Exporter:x509-certificate-exporter[3]。
与 ssl-exporter 不同,x509-certificate-exporter 只专注于监控 Kubernetes 集群相关的证书,包括各个组件的文件证书、Kubernetes TLS Secret、Kubeconfig 文件,而且指标更加丰富。我们来看看在 KubeSphere 中如何部署 x509-certificate-exporter 以监控集群的所有证书。
准备 KubeSphere 应用模板
KubeSphere[4] 集成了 OpenPitrix[5] 来提供应用程序全生命周期管理,OpenPitrix 是一个多云应用管理平台,KubeSphere 利用它实现了应用商店和应用模板,以可视化的方式部署并管理应用。对于应用商店中不存在的应用,用户可以将 Helm Chart 交付至 KubeSphere 的公共仓库,或者导入私有应用仓库来提供应用模板。
本教程将使用 KubeSphere 的应用模板来部署 x509-certificate-exporter。
要想从应用模板部署应用,需要创建一个企业空间、一个项目和两个用户帐户(ws-admin
和 project-regular
)。ws-admin
必须被授予企业空间中的 workspace-admin
角色, project-regular
必须被授予项目中的 operator
角色。有关更多信息,请参考创建企业空间、项目、帐户和角色[6]。
创建项目
在此步骤中,您需要使用在上一步骤中创建的帐户 ws-admin
来创建项目。KubeSphere 中的项目与 Kubernetes 中的命名空间相同,为资源提供了虚拟隔离。有关更多信息,请参见命名空间[7]。
以
ws-admin
身份登录 KubeSphere,在项目管理中,点击创建。输入项目名称(例如
exporter
),然后点击确定完成,您还可以为项目添加别名和描述。在项目管理中,点击刚创建的项目查看其详细信息。
邀请
project-regular
至该项目,并授予该用户operator
角色。请参考下图以了解具体步骤。具有
operator
角色的用户是项目维护者,可以管理项目中除用户和角色以外的资源。
添加应用仓库
以
ws-admin
用户登录 KubeSphere 的 Web 控制台。在您的企业空间中,进入应用管理下的应用仓库页面,并点击添加仓库。在弹出的对话框中,将应用仓库名称设置为
enix
,将应用仓库的 URL 设置为https://charts.enix.io
,点击验证对 URL 进行验证,再点击确定进入下一步。应用仓库导入成功后会显示在如下图所示的列表中。
部署 x509-certificate-exporter
导入 x509-certificate-exporter 的应用仓库后,就可以通过应用模板来部署 x509-certificate-exporter 了。
登出 KubeSphere 并以
project-regular
用户重新登录。在您的项目中,进入应用负载下的应用页面,再点击部署新应用。在弹出的对话框中选择来自应用模板。
在弹出的对话框中选择来自应用模板。
来自应用商店:选择内置的应用和以 Helm Chart 形式单独上传的应用。
来自应用模板:从私有应用仓库和企业空间应用池选择应用。
从下拉列表中选择之前添加的私有应用仓库
enix
。选择 x509-certificate-exporter 进行部署。
您可以查看应用信息和配置文件,在版本下拉列表中选择版本,然后点击部署。
设置应用名称,确认应用版本和部署位置,点击下一步。
接下来进入应用配置页面。
这里需要手动编辑配置清单,指定证书文件的路径。
daemonSets:master:nodeSelector:node-role.kubernetes.io/master: ''tolerations:- effect: NoSchedulekey: node-role.kubernetes.io/masteroperator: ExistswatchFiles:- /var/lib/kubelet/pki/kubelet-client-current.pem- /etc/kubernetes/pki/apiserver.crt- /etc/kubernetes/pki/apiserver-kubelet-client.crt- /etc/kubernetes/pki/ca.crt- /etc/kubernetes/pki/front-proxy-ca.crt- /etc/kubernetes/pki/front-proxy-client.crtwatchKubeconfFiles:- /etc/kubernetes/admin.conf- /etc/kubernetes/controller-manager.conf- /etc/kubernetes/scheduler.confnodes:tolerations:- effect: NoSchedulekey: node-role.kubernetes.io/ingressoperator: ExistswatchFiles:- /var/lib/kubelet/pki/kubelet-client-current.pem- /etc/kubernetes/pki/ca.crt
该配置会创建两个
DaemonSet
,master 运行在控制节点,nodes 运行在计算节点。$ kubectl -n exporter get dsNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE x509-x509-certificate-exporter-master 1 1 1 1 1 node-role.kubernetes.io/master= 3d14h x509-x509-certificate-exporter-nodes 3 3 3 3 3 <none> 3d14h
参数解释:
watchFiles : 证书文件所在的路径。
watchKubeconfFiles : Kubeconfig 文件所在的路径。
改完后的效果如图所示。
点击部署,等待应用创建完成并开始运行。
接入监控系统
通过应用模板部署完成后,除了会创建两个 DaemonSet 之外,还会创建一个
ServiceMonitor
。$ kubectl -n exporter get servicemonitor NAME AGE x509-x509-certificate-exporter 3d15h
打开 Prometheus 的 Web UI,可以看到相应的
Targets
已经在线。x509-certificate-exporter 官方提供了一个 Grafana Dashboard[8],导入 Grafana 后的效果如图:
各项指标一目了然,一般我们只需要关注已经过期的证书和即将过期的证书即可。假设我想查看证书还有多久失效,可以使用表达式
(x509_cert_not_after{filepath!=""} - time()) / 3600 / 24
。可以创建相应的告警规则,以便在证书即将过期时通知运维人员尽快更新证书。例如:
进入监控告警下的告警策略页面,点击创建。
填写告警名称,设置告警级别,点击下一步。
选择自定义规则,告警规则填入
(x509_cert_not_after{filepath!=""} - time()) / 3600 / 24 < 30
。点击下一步,填写标题和消息。
点击创建,告警规则就创建完成了。
结语
事实上 KubeSphere 从 3.1 版本开始就内置了证书过期的告警策略,可以在告警策略页面的内置策略中输入
expir
进行搜索。点进去可以看到具体的告警规则表达式。
告警规则表达式里面的指标是 API Server 组件自身暴露的指标,并没有兼顾到整个集群所有组件的证书。想要全面监控所有组件的证书,建议结合 x509-certificate-exporter 在 KubeSphere 中添加自定义告警策略,从此不再为证书过期而烦恼。
脚注
[1]
KubeKey: https://github.com/kubesphere/kubekey
[2]
ssl-exporter: https://github.com/ribbybibby/ssl_exporter
[3]
x509-certificate-exporter: https://github.com/enix/x509-certificate-exporter
[4]
KubeSphere: https://kubesphere.com.cn
[5]
OpenPitrix: https://github.com/openpitrix/openpitrix
[6]
创建企业空间、项目、帐户和角色: https://kubesphere.io/zh/docs/quick-start/create-workspace-and-project/
[7]
命名空间: https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/namespaces/
[8]
Grafana Dashboard: https://grafana.com/grafana/dashboards/13922
KubeSphere 社区活动预告
“CIC 2021 云计算峰会”正式启动啦!CIC 2021 是一场 Top 级行业盛会,将汇聚 800 家青云QingCloud 企业客户信息化负责人,采取线上线下相结合的方式,与会规模将超过 10000 人。
大会的主题为“预见·数字自由”,将有技术大牛分享前沿成果,行业大咖带来实战经验。本次大会除了主论坛,还设置了多个分论坛。KubeSphere Meetup 将作为其中一个分论坛,延续之前上海、杭州、成都三站的 “KubeSphere & Friends” 的主题,为大家带来技术的交流和碰撞。
北京站目前已经开启招募,若您希望获取经验,期待和各位极客交流,那就抓紧报名吧!位置有限,先到先得!
扫描下方图中的二维码进入到报名页面,填写个人信息,选择 “KubeSphere & Friends 2021 Meetup - 北京站”,即可报名。
关于 KubeSphere
KubeSphere (https://kubesphere.io)是在 Kubernetes 之上构建的开源容器混合云,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。
KubeSphere 已被 Aqara 智能家居、本来生活、新浪、华夏银行、四川航空、国药集团、微众银行、紫金保险、中通、中国人保寿险、中国太平保险、中移金科、Radore、ZaloPay 等海内外数千家企业采用。KubeSphere 提供了开发者友好的向导式操作界面和丰富的企业级功能,包括多云与多集群管理、Kubernetes 资源管理、DevOps (CI/CD)、应用生命周期管理、微服务治理 (Service Mesh)、多租户管理、监控日志、告警通知、审计事件、存储与网络管理、GPU support 等功能,帮助企业快速构建一个强大和功能丰富的容器云平台。
✨ GitHub:https://github.com/kubesphere
???? 官网(中国站):https://kubesphere.com.cn
???????? 微信群:请搜索添加群助手微信号 kubesphere
巧用 Prometheus 监控 Kubernetes 集群所有组件的证书相关推荐
- 使用Prometheus监控kubernetes集群
一键安装(网络可访问quay.io): kubectl apply --filename https://raw.githubusercontent.com/giantswarm/kubernetes ...
- Prometheus-使用Prometheus监控Kubernetes集群
Prometheus是一个集数据收集存储.数据查询和数据图表显示于一身的开源监控组件.本文主要讲解如何搭建Prometheus,并使用它监控Kubernetes集群. 准备工作 Kubernete ...
- k8s学习(二十四) 使用prometheus监控kubernetes集群应用
1.修改部署traefik时的traefik.toml 添加 [metrics][metrics.prometheus]entryPoint = "traefik"buckets ...
- 三种监控 Kubernetes 集群证书过期方案
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 前言 Kubernetes 中大量用到了证书, 比如 ca证书.以及 kubelet.apiserver.prox ...
- Kubernetes集群Coredns组件的妙处(四十五)
Kubernetes集群Coredns组件的妙处 1.Coredns基本概念 CoreDNS项目是SkyDNS2的作者,Miek Gieben采用更模块化,可扩展的框架构建,将此DNS服务器作为Kub ...
- Prometheus监控Kafka集群
prometheus监控kafka常见的有两种开源方案,一种是传统的部署exporter的方式,一种是通过jmx配置监控,本文将采用第二种方式进行配置. 项目地址: kafka_exporter:ht ...
- Prometheus监控kubernetes
Prometheus监控 kubernetes 咱们的目标通过Prometheus监控Kubernetes集群. 1.使用ConfigMaps管理Prometheus的配置文件 创建prometheu ...
- 在Kubernetes集群上部署和管理JFrog Artifactory
JFrog Artifactory是一个artifacts仓库管理平台,它支持所有的主流打包格式.构建工具和持续集成(CI)服务器.它将所有二进制内容保存在一个单一位置并提供一个接口,这使得用户在整个 ...
- 骚操作,这款工具可以把Kubernetes集群打包成一个镜像
sealer[ˈsiːlər]是一款分布式应用打包交付运行的解决方案,通过把分布式应用及其数据库中间件等依赖一起打包以解决复杂应用的交付问题. sealer 构建出来的产物我们称之为集群镜像, 集群镜 ...
最新文章
- python 中*args 和 **kwargs的区别
- 【C++】欧几里德算法快速求最大公约数
- Nginx高效学习手册(建议收藏)
- RocketMQ-单机版安装与启动详细步骤
- Hologres是如何完美支撑双11智能客服实时数仓的?
- execCommand 在火狐下正常使用方法
- NEC SV8100电话交换机配置梓博电话计费系统
- 春晓JAVA的横排和竖排输出
- php rabbitmq 封装,PHP rabbitmq扩展安装
- linux脚本生成数字写入文本,4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16...
- shell_study
- linux命令kill_什么是Linux中的kill命令?
- [No000072]Windows环境变量列表
- Android软件测试的日志文件问题
- 15.卷2(进程间通信)---门
- 修改win10注册表来控制cpu的最大运行频率,实现电脑降温
- Matlab 2016a 安装教程
- 先进的分销管理系统(ADMS)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Minecraft forge服务端安装
- tc简单开发。窗口类。在窗口初始化时,使用窗口隐藏()
热门文章
- kettle spoon判断增量更新_使用Kettle实现数据实时增量同步--时间戳增量回滚同步...
- 端口号是什么以及常见端口号
- Python控制键盘鼠标pynput的详细用法 (转载)
- 类图,类与类之间的关系
- 模拟高校的三个老师同时分发80份学习笔记
- 如何搭建“业务化”的指标体系?
- FT2232器件Bit Mode函数
- UVa Online Judge 西班牙Valladolid 在线判官 和 uDebug使用简单教程
- rstp 转hls_EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
- metatrade4索罗斯都要用到的外汇交易术