本文超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已失效。
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
在开源领域,使用 InfluxDB 的 Grafana 设置是一种非常流行的监控组合。InfluxDB 提供了一个易于使用的 API 来写入和获取时间序列数据。在大多数 Kubernetes 集群上,Heapster 默认设置为使用此存储后端。详细的设置指南可以 在这里 找到。InfluxDB 和 Grafana 在 Pod 中运行。Pod 将自身公开为 Kubernetes 服务,Heapster 通过这种方式发现它。
Grafana 容器提供 Grafana 的 UI,该 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 集群上运行,因此您可能已经拥有它!欢迎提供反馈。如果您遇到任何问题,请通过故障排除渠道告知我们。