Kubernetes中的资源使用情况监控

了解应用程序在部署时的行为方式对于扩展应用程序和提供可靠的服务至关重要。在Kubernetes集群中,可以在许多不同级别上检查应用程序性能:容器, 豆荚, 服务,以及整个集群。作为Kubernetes的一部分,我们希望为用户提供有关所有这些级别上正在运行的应用程序的详细资源使用信息。这将使用户深入了解其应用程序的性能以及在哪里可能发现应用程序瓶颈。进来 堆子,该项目旨在在Kubernetes上提供基本的监视平台。

总览

堆子是监视和事件数据的全群集聚合器。它目前本地支持Kubernetes,并且可以在所有Kubernetes设置上使用。 堆子在集群中作为Pod运行,类似于任何Kubernetes应用程序的运行方式。 堆子窗格可发现群集中的所有节点,并从节点的 Kubelets,机器上的Kubernetes代理。 Kubelet本身从中获取数据 顾问。 堆子通过pod和相关标签对信息进行分组。然后将这些数据推送到可配置的后端进行存储和可视化。当前支持的后端包括 InfluxDB (与 格拉法纳 用于可视化), Google Cloud监控 还有许多其他内容在这里有更详细的描述。该服务的总体架构如下所示:

让我们更详细地了解其他一些组件。

顾问

顾问是一个开源容器资源使用和性能分析代理。它是专为容器而构建的,并且本身支持Docker容器。在Kubernetes中,将cadvisor集成到Kubelet二进制文件中。 顾问会自动发现计算机中的所有容器,并收集CPU,内存,文件系统和网络使用情况统计信息。 顾问还可以通过分析“根”来提供整个计算机的使用情况?机器上的容器。

在大多数Kubernetes集群上,cAdvisor在端口4194上提供了一个用于机上容器的简单UI。这是cAdvisor UI的一部分快照,显示了整体机器使用情况:

Kubelet

Kubelet充当Kubernetes主节点与节点之间的桥梁。它管理在机器上运行的容器和容器。 Kubelet将每个吊舱转换成其组成的容器,并从cAdvisor获取各个容器的使用统计信息。然后,它通过REST API公开汇总的pod资源使用情况统计信息。

储存后端

InfluxDB和Grafana

InfluxDB的Grafana设置是一种非常流行的组合,用于在开源世界中进行监视。 InfluxDB公开了易于使用的API来编写和获取时间序列数据。在大多数Kubernetes群集上,默认情况下将Heapster设置为使用此存储后端。可以找到详细的设置指南 这里 。 InfluxDB和Grafana在Pods中运行。该Pod将自己展示为Kubernetes服务,这是Heapster发现它的方式。

格拉法纳容器提供了Grafana的UI,该UI提供了易于配置的仪表板界面。 Kubernetes的默认仪表板包含一个示例仪表板,该仪表板监视集群及其内部Pod的资源使用情况。该仪表板可以轻松自定义和扩展。看一下InfluxDB的存储模式 这里 .

这是一个视频,展示了如何使用heapster,InfluxDB和Grafana监视Kubernetes集群:

这是默认的Kubernetes 格拉法纳仪表板的快照,该仪表板显示了整个集群,单个容器和容器的CPU和内存使用情况:

Google Cloud监控

Google Cloud监控是一项托管的监视服务,可让您可视化并警告应用程序中的重要指标。可以将Heapster设置为自动将所有收集的指标推送到Google Cloud监控。这些指标随后可在 云监控控制台。此存储后端是最容易设置和维护的。监视控制台使您可以使用导出的数据轻松创建和自定义仪表板。

以下视频显示了如何设置和运行由Google Cloud监控支持的Heapster: "//youtube.com/embed/xSMNR2fcoLs" 这是Google Cloud监控仪表板的快照,显示了群集范围内的资源使用情况。

试试看!

现在,您已经了解了一些有关Heapster的知识,请随时在自己的集群上进行尝试!的 堆存储库 在GitHub上可用。它包含有关设置Heapster及其存储后端的详细说明。默认情况下,Heapster在大多数Kubernetes集群上运行,因此您可能已经拥有了!始终欢迎反馈。如果您通过疑难解答渠道遇到任何问题,请告诉我们。

-Google软件工程师Vishnu Kannan和Victor Marmol