资源监控工具

为了扩展应用程序并提供可靠的服务,您需要了解应用程序在部署时的行为。您可以通过检查容器、Pod服务以及整个集群的特性来检查 Kubernetes 集群中的应用程序性能。Kubernetes 提供有关应用程序在每个级别上的资源使用情况的详细信息。这些信息使您能够评估应用程序的性能以及可以消除瓶颈以提高整体性能的位置。

在 Kubernetes 中,应用程序监控不依赖于单个监控解决方案。在新的集群上,您可以使用 资源指标完整指标 管道来收集监控统计信息。

资源指标管道

资源指标管道提供与集群组件(如 水平 Pod 自动缩放器 控制器)以及 kubectl top 实用程序相关的有限指标集。这些指标由轻量级、短期、内存中的 metrics-server 收集,并通过 metrics.k8s.io API 公开。

metrics-server 会发现集群中的所有节点,并查询每个节点的 kubelet 以获取 CPU 和内存使用情况。kubelet 充当 Kubernetes 主节点和节点之间的桥梁,管理运行在机器上的 Pod 和容器。kubelet 会将每个 Pod 转换为其组成容器,并通过容器运行时接口从容器运行时获取各个容器使用情况统计信息。如果您使用的是使用 Linux cgroups 和命名空间来实现容器的容器运行时,并且容器运行时未发布使用情况统计信息,那么 kubelet 可以直接查找这些统计信息(使用来自 cAdvisor 的代码)。无论这些统计信息如何到达,kubelet 都会通过 metrics-server 资源指标 API 公开聚合的 Pod 资源使用情况统计信息。此 API 在 kubelet 的经过身份验证的只读端口上的 /metrics/resource/v1beta1 上提供服务。

完整指标管道

完整的指标管道使您可以访问更丰富的指标。Kubernetes 可以通过自动缩放或根据当前状态调整集群来响应这些指标,使用诸如水平 Pod 自动缩放器之类的机制。监控管道从 kubelet 获取指标,然后通过实现 custom.metrics.k8s.ioexternal.metrics.k8s.io API 的适配器将其公开给 Kubernetes。

Kubernetes 旨在与 OpenMetrics 协同工作,OpenMetrics 是 CNCF 可观测性和分析 - 监控项目 之一,它建立在 Prometheus 公开格式 之上,并以几乎 100% 向后兼容的方式对其进行了扩展。

如果您查看 CNCF 景观,您会看到许多监控项目可以通过抓取指标数据并使用它来帮助您观察集群来与 Kubernetes 协同工作。选择适合您需求的工具或工具由您决定。用于可观测性和分析的 CNCF 景观包含开源软件、付费软件即服务以及其他商业产品。

在设计和实现完整的指标管道时,您可以将该监控数据提供回 Kubernetes。例如,水平 Pod 自动缩放器可以使用处理后的指标来计算要为工作负载的组件运行多少个 Pod。

由于可能的解决方案范围非常广泛,因此将完整的指标管道集成到 Kubernetes 实现中超出了 Kubernetes 文档的范围。

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

下一步

了解其他调试工具,包括

上次修改时间:2024 年 3 月 19 日下午 6:26 PST:更新 resource-usage-monitoring.md (d77e68f2fd)