资源监控工具

为了扩展应用程序并提供可靠的服务,你需要了解应用程序部署后的行为方式。你可以通过检查容器、podService 以及整个集群的特性来检查 Kubernetes 集群中的应用程序性能。Kubernetes 在这些层级上的每一个都提供了关于应用程序资源使用情况的详细信息。这些信息使你能够评估应用程序的性能,并确定可以在何处消除瓶颈以提高整体性能。

在 Kubernetes 中,应用程序监控不依赖于单一监控解决方案。在新集群上,你可以使用资源度量全量度量管道来收集监控统计数据。

资源指标管道

资源度量管道提供了一组有限的与集群组件(如Horizontal Pod Autoscaler 控制器)以及 kubectl top 工具相关的度量。这些度量由轻量级、短期、内存型的 metrics-server 收集,并通过 metrics.k8s.io API 暴露。

metrics-server 发现集群上的所有节点,并查询每个节点的 kubelet 以获取 CPU 和内存使用情况。kubelet 充当 Kubernetes 主控平面与节点之间的桥梁,管理机器上运行的 Pod 和容器。kubelet 将每个 Pod 翻译成其组成容器,并通过容器运行时接口从容器运行时获取单个容器使用统计数据。如果你使用使用 Linux cgroup 和命名空间来实现容器的容器运行时,并且容器运行时不发布使用统计数据,则 kubelet 可以直接查找这些统计数据(使用来自 cAdvisor 的代码)。无论这些统计数据如何到达,kubelet 都会通过 metrics-server 资源度量 API 暴露聚合的 Pod 资源使用统计数据。此 API 在 kubelet 的认证和只读端口上的 /metrics/resource/v1beta1 提供服务。

全量度量管道

全量度量管道使你可以访问更丰富的度量。Kubernetes 可以通过使用 Horizontal Pod Autoscaler 等机制,根据集群当前状态自动扩展或调整集群来响应这些度量。监控管道从 kubelet 获取度量,然后通过实现 custom.metrics.k8s.ioexternal.metrics.k8s.io API 的适配器将其暴露给 Kubernetes。

Kubernetes 被设计为与 OpenMetrics 配合工作,OpenMetrics 是 CNCF 可观测性与分析 - 监控项目之一,在几乎 100% 向后兼容的方式下构建并小心地扩展了 Prometheus 暴露格式

如果你快速浏览一下 CNCF Landscape,你会看到许多监控项目可以通过抓取(scraping)度量数据并利用这些数据来帮助你观察集群。选择适合你需求的工具取决于你。CNCF 可观测性与分析图景包含了开源软件、付费软件即服务(SaaS)以及其他商业产品。

当你设计并实现一个全量度量管道时,你可以将这些监控数据再次提供给 Kubernetes。例如,HorizontalPodAutoscaler 可以使用处理过的度量来计算你的工作负载组件需要运行多少个 Pod。

将全量度量管道集成到你的 Kubernetes 实现中超出了 Kubernetes 文档的范围,因为可能的解决方案范围非常广泛。

监控平台的选择很大程度上取决于你的需求、预算和技术资源。Kubernetes 不推荐任何特定的度量管道;有许多选项可用。你的监控系统应能够处理 OpenMetrics 度量传输标准,并且需要选择最适合你的基础设施平台的整体设计和部署的系统。

下一步

了解更多调试工具,包括

最后修改时间:太平洋标准时间 2025 年 1 月 18 日 上午 2:11:移除监控链接 (75e18ae634)