资源监控工具
为了扩展应用程序并提供可靠的服务,您需要了解应用程序在部署时的行为。您可以通过检查容器、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.io
或 external.metrics.k8s.io
API,通过适配器将它们公开给 Kubernetes。
Kubernetes 设计为与 OpenMetrics 一起工作,这是 CNCF 可观察性和分析 - 监控项目 之一,它建立在 Prometheus 指标暴露格式 的基础上,并以几乎 100% 向后兼容的方式仔细扩展。
如果您浏览一下CNCF Landscape,您可以看到许多可以通过抓取指标数据并使用这些数据来帮助您观察集群的监控项目。您可以选择适合您需求的工具。CNCF 用于可观察性和分析的 Landscape 包括开源软件、付费软件即服务以及其他商业产品。
当您设计和实施完整的指标管道时,您可以将监控数据返回给 Kubernetes。例如,HorizontalPodAutoscaler 可以使用处理后的指标来计算为工作负载的组件运行多少个 Pod。
由于可能的解决方案范围非常广泛,因此将完整指标管道集成到您的 Kubernetes 实现中不在 Kubernetes 文档的范围之内。
监控平台的选择在很大程度上取决于您的需求、预算和技术资源。Kubernetes 不推荐任何特定的指标管道;有许多选项可用。您的监控系统应该能够处理 OpenMetrics 指标传输标准,并且需要选择最适合您的基础架构平台的整体设计和部署的系统。
下一步是什么
了解其他调试工具,包括