在 Kubernetes 中,你可以监控很多方面,但关键是要明确哪些监控点是至关重要的。在最近的一次网络研讨会上,我们讨论了在 Kubernetes 平台上应该监控哪些内容、应遵循哪些最佳实践,以及为什么 Kubernetes 监控对于云原生应用开发如此重要。最后,我们收到了一些很好的问题,希望将这些问题的答案分享给大家。
1. 如何监控成本?
理解每个工作负载当前的成本、成本产生的原因,以及如何降低成本至关重要。例如,如果你为某个工作负载设置了 1 个 CPU 的请求,但实际上它只使用了一半,那么你就有一半的资源被浪费了。监控可以帮助你发现哪些工作负载经常达到 CPU 和内存的阈值,从而相应地调整资源分配。要清楚地了解成本,需要分析工作负载在一段时间内的运行成本。
2. 如何选择监控工具?
Prometheus、Grafana、Datadog 和 Fairwinds Insights 可以很好地协同工作。Prometheus、Grafana 和 Datadog 主要负责实时监控,能够即时告诉你应用是否出现问题。而 Fairwinds Insights 则帮助你发现潜在的漏洞、过度配置的问题或配置错误。这些工具相互补充,共同提供全面的监控解决方案。
3. Kubernetes 中的最佳可观察性框架是什么?
有多种框架可供选择。我们内部使用 Datadog,因为它易于使用且功能强大。还有 Open Telemetry 这样的开放标准,它提供了一系列用于生成、收集和导出遥测数据的 API、SDK 和工具。Prometheus 和 Grafana 也是 Kubernetes 中可观察性的优选工具,选择哪种取决于你对易用性、成本和社区支持的权衡。
4. 谁负责应用程序指标和仪表板警报的不同指标和日志?
理想的是,有一个平台或 SRE 团队负责监控节点本身的核心指标、Kubernetes 服务、控制平面和任何运行中的附加组件。而应用程序团队则应负责监控应用程序生成的日志,包括作业启动和扩展事件。在应用程序扩展或资源不足导致的问题上,可能需要两个团队的协作。
5. 在采用自适应黄金信号跟踪之前,如何建立基线?
建立基线是一个持续的过程,需要不断地调整和完善监控的内容、仪表板显示和警报设置。首先,要跟踪延迟、流量、错误和饱和度这四个黄金信号,并观察正常行为。在应用启动初期,要频繁检查仪表板,以确定什么是正常的行为模式。
6. 命名空间的最佳实践是什么?
使用命名空间是最佳实践之一。避免将所有应用部署在同一个默认命名空间中,这会导致权限和资源管理上的混乱。至少应该按团队或应用分离命名空间。此外,可以创建层次化的命名空间结构,或通过标签来进一步区分和跟踪资源。
7. 为什么 Kubernetes 平台中的监控至关重要?
无论是否使用 Kubernetes,监控都是必不可少的。没有监控,你就无法了解应用环境的健康状况,也无法及时发现和解决问题。监控可以帮助你发现性能下降或资源压力等问题,避免用户体验受损。
8. 有没有备份系统来导出整个集群或一些节点?
开源解决方案 Velero 可以用来备份和恢复 Kubernetes 集群。我们建议将所有基础设施定义为代码,这样即使集群出现问题,也可以快速地通过重新应用基础设施代码来重建。
9. Datadog 和 Splunk,哪个更适合用于指标监控?
没有固定的推荐,但内部使用 Datadog,它在日志管理和 Kubernetes 指标集成方面表现出色。Splunk 可能也有类似的功能,建议在小规模集群上尝试两者,看哪个更适合你的需求。
确保在 Kubernetes 中进行监控,这将帮助你管理复杂性,收集集群事件、日志和跟踪的指标,并设置警报以快速响应问题。