用更云原生的方式做诊断|大规模 K8s 集群诊断利器深度解析
本文约 3500 字,预计阅读时间:9 分钟
通常而言,集群的稳定性决定了一个平台的服务质量以及对外口碑,当一个平台管理了相当规模数量的 Kubernetes 集群之后,在稳定性这件事上也许会“稍显被动”。
项目介绍
项目地址:
https://github.com/erda-project/kubeprober
官网地址:
https://k.erda.cloud
-
支持大规模集群 支持多集群管理,支持在管理端配置集群跟诊断项的关系以及统一查看所有集群的诊断结果。 -
云原生 核心逻辑采用 operator 来实现,提供完整的 Kubernetes API 兼容性。 -
可扩展 支持用户自定义巡检项。
其核心架构如下:
区别于监控系统,Kubeprober 从巡检的角度来验证集群的各项功能是否正常,监控作为正向链路,无法覆盖系统中的所有场景,即使系统中各个环境的监控数据都正常,也无法保证系统是 100% 可用的,因此我们就需要一个工具从反向来证明系统的可用性,根本上做到先于用户发现集群中不可用的点,比如:
集群中的所有节点是否均可以被调度,有没有特殊的污点存在等;
pod 是否可以正常的创建,销毁,验证从 Kubernetes,Kubelet 到 Docker 的整条链路;
创建一个 service,并测试连通性,验证 kube-proxy 的链路是否正常;
解析一个内部或者外部的域名,验证 CoreDNS 是否正常工作;
访问一个 ingress 域名,验证集群中的 ingress 组件是否正常工作;
创建并删除一个 namespace,验证相关的 webhook 是否正常工作;
对 Etcd 执行 put/get/delete 等操作,用于验证 Etcd 是否正常运行;
通过 mysql-client 的操作来验证 MySQL 是否正常运行;
模拟用户对业务系统进行登录,操作,验证业务的主流程是否正常;
检查各个环境的证书是否过期;
云资源的到期检查;
……
组件介绍
什么是 Probe
自定义 Probe https://github.com/erda-project/kubeprober/blob/master/probers/README.md
官方文档
https://docs.erda.cloud/2.0/manual/eco-tools/kubeprober/guides/introduction.html
Kubeprober 在多集群中根据 probe 的策略执行诊断项,会产生大量的诊断事件。由此,对这些诊断项进行可视化的展示就显得尤为重要,此时如果有一个全局的 dashboard 对大规模集群的海量诊断项进行统一查看分析,将会更有利于我们掌握这些集群的运行状态。
Kubeprober 支持将诊断项事件写入 influxdb,通过 grafana 配置图表来统一展示诊断结果,比如:我们将 ERROR 事件统一展示出来作为最高优先级进行关注。
随着数字化的逐渐发展,企业的 IT 架构也变得越来越复杂,如何在复杂环境中保证业务连续性及稳定性?相信这是每一个 IT 从业者都会面临的问题,如果大家对稳定性的话题或者是对 Kuberprober 项目感兴趣,欢迎联系我们一起深入探讨,同时也欢迎广大开源爱好者一起参与,共同打造一个大规模的 Kubernetes 集群的管理神器。
Contributing to Kubeprober
https://github.com/erda-project/kubeprober/blob/master/CONTRIBUTING.md
-
Erda Github 地址 : https://github.com/erda-project/erda -
Erda Cloud 官网 : https://www.erda.cloud/
本文分享自微信公众号 - 尔达 Erda(gh_0f507c84dfb0)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
