本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
Kubernetes 中的资源使用监控
了解应用程序部署后的行为对于扩展应用程序和提供可靠的服务至关重要。在 Kubernetes 集群中,应用程序性能可以在许多不同级别进行检查:容器、Pod、服务和整个集群。作为 Kubernetes 的一部分,我们希望为用户提供有关其运行应用程序在所有这些级别的详细资源使用信息。这将使用户深入了解其应用程序的性能以及可能存在的应用程序瓶颈。这就是 Heapster,一个旨在为 Kubernetes 提供基础监控平台的项目。
概述
Heapster 是集群范围的监控和事件数据聚合器。它目前原生支持 Kubernetes,并适用于所有 Kubernetes 设置。Heapster 作为 Pod 在集群中运行,类似于任何 Kubernetes 应用程序的运行方式。Heapster Pod 发现集群中的所有节点,并从节点的 Kubelet(机器上的 Kubernetes 代理)查询使用信息。Kubelet 本身从 cAdvisor 获取数据。Heapster 将信息按 Pod 和相关标签分组。然后,这些数据被推送到可配置的后端进行存储和可视化。目前支持的后端包括 InfluxDB(与 Grafana 用于可视化)、Google Cloud Monitoring 以及此处详细描述的许多其他后端。服务的整体架构如下所示
让我们更详细地了解一些其他组件。
cAdvisor
cAdvisor 是一个开源容器资源使用和性能分析代理。它专为容器构建,并原生支持 Docker 容器。在 Kubernetes 中,cAdvisor 集成到 Kubelet 二进制文件中。cAdvisor 自动发现机器中的所有容器,并收集 CPU、内存、文件系统和网络使用统计信息。cAdvisor 还通过分析机器上的“根”容器来提供整体机器使用情况。
在大多数 Kubernetes 集群上,cAdvisor 在端口 4194 上为机器上的容器提供一个简单的 UI。这是 cAdvisor UI 的一部分快照,显示了整体机器使用情况
Kubelet
Kubelet 充当 Kubernetes master 和节点之间的桥梁。它管理机器上运行的 Pod 和容器。Kubelet 将每个 Pod 转换为其组成容器,并从 cAdvisor 获取各个容器的使用统计信息。然后,它通过 REST API 公开聚合的 Pod 资源使用统计信息。
存储后端
InfluxDB 和 Grafana
Grafana 与 InfluxDB 的设置是开源世界中非常流行的监控组合。InfluxDB 提供了一个易于使用的 API 来写入和获取时间序列数据。在大多数 Kubernetes 集群上,Heapster 默认设置为使用此存储后端。详细的设置指南可以在这里找到。InfluxDB 和 Grafana 在 Pod 中运行。该 Pod 将自身公开为 Kubernetes 服务,Heapster 通过这种方式发现它。
Grafana 容器提供 Grafana 的 UI,它提供了一个易于配置的仪表板界面。Kubernetes 的默认仪表板包含一个示例仪表板,用于监控集群及其内部 Pod 的资源使用情况。此仪表板可以轻松定制和扩展。请在此处查看 InfluxDB 的存储模式 这里。
这是一个视频,演示如何使用 heapster、InfluxDB 和 Grafana 监控 Kubernetes 集群
这是默认 Kubernetes Grafana 仪表板的快照,显示了整个集群、单个 Pod 和容器的 CPU 和内存使用情况
Google Cloud Monitoring
Google Cloud Monitoring 是一项托管监控服务,允许您可视化和警报应用程序中的重要指标。Heapster 可以设置为自动将所有收集的指标推送到 Google Cloud Monitoring。这些指标随后可在 Cloud Monitoring Console 中查看。此存储后端是最易于设置和维护的。监控控制台允许您使用导出的数据轻松创建和自定义仪表板。
这是一个视频,演示如何设置和运行 Google Cloud Monitoring 支持的 Heapster:“https://youtube.com/embed/xSMNR2fcoLs”这是 Google Cloud Monitoring 仪表板的快照,显示了集群范围的资源使用情况。
试一试!
既然您已经对 Heapster 有了一些了解,请随时在您自己的集群上试用它!Heapster 存储库在 GitHub 上可用。它包含设置 Heapster 及其存储后端的详细说明。Heapster 默认在大多数 Kubernetes 集群上运行,因此您可能已经拥有它了!欢迎提出反馈意见。如果您遇到任何问题,请通过故障排除渠道告知我们。