在生产环境中运行 Kubernetes 集群是一项庞大的工程,涉及许多活动的部件。监控所有这些不同的部件绝非易事。更糟糕的是,Kubernetes 非常分布式且通常具有自我修复能力。如果您的集群中出现问题,它可能是间歇性的(或足够具体的),以至于您在相当长一段时间内都不会发现故障。当然,在那段时间里,您的客户或开发人员可能会遇到体验降级或完全崩溃的情况。
一些可能长期被忽视的隐蔽问题的示例
- CNI 代理崩溃
- 节点由于托管在其上的嘈杂 Pod 引起的速率限制而被 API 服务器阻止
- Kubelet 间歇性崩溃
- 间歇性的 Kubernetes API 连接问题
- kube-dns 或 CoreDNS 的单 Pod 故障
传统的指标和警报不足以准确识别这些类型的故障情况,但这些问题可能导致 Pod 无法调度、滚动更新挂起、DNS 查询回答不正确、流量负载均衡不当以及许多许多更糟糕的事情。显然,需要额外的监控来源来深入了解 Kubernetes 的功能,从而清晰地呈现集群的健康状况。
幸运的是,借助 Comcast 创建和使用的开源项目 Kuberhealthy,Kubernetes 的 综合监控 的设置变得更加容易。Kuberhealthy 的功能之一是每 15 分钟对您的集群运行一次检查,以确保每个节点都可以在可接受的时间内正确部署和删除 Pod。这个简单的测试确保了集群调度器、Kubernetes API 和 CNI 供应功能正常运行。
这些检查的结果可以轻松地作为 Prometheus 指标提供和监控,或者通过抓取 Kuberhealthy 提供的简单 JSON 状态页面进行监控。更多设置细节和检查信息可在 Kuberhealthy 的 README 中找到。
由于 Kubernetes 及其服务的自我修复和分布式特性,生产 Kubernetes 集群中的许多问题可能会在很长一段时间内被忽视和未知。通过启用一些简单的综合检查,我们更有可能在客户或开发人员注意到之前,捕获基础设施中这些短暂且范围有限的干扰。
1 条评论