资源监控工具
为了扩展应用程序并提供可靠的服务,你需要了解应用程序在部署时的行为。你可以通过检查容器、Pod、Service 以及整个集群的特性来评估 Kubernetes 集群中的应用程序性能。Kubernetes 在每个级别都提供了关于应用程序资源使用的详细信息。这些信息可以帮助你评估应用程序的性能,并找出可以消除的瓶颈以提高整体性能。
在 Kubernetes 中,应用程序监控不依赖于单一的监控解决方案。在新集群上,你可以使用资源度量或完整度量管道来收集监控统计信息。
资源度量管道
资源度量管道提供了一组有限的度量指标,这些指标与集群组件相关,例如 Horizontal Pod Autoscaler 控制器以及 `kubectl top` 工具。这些度量指标由轻量级、短期、内存中的 metrics-server 收集,并通过 `metrics.k8s.io` API 公开。
metrics-server 会发现集群中的所有节点,并向每个节点的 kubelet 查询 CPU 和内存使用情况。kubelet 充当 Kubernetes master 和节点之间的桥梁,管理机器上运行的 Pod 和容器。kubelet 将每个 Pod 转换为其组成容器,并通过容器运行时接口从容器运行时获取单个容器的使用统计信息。如果你使用的容器运行时使用 Linux cgroups 和命名空间来实施容器,并且容器运行时不发布使用统计信息,那么 kubelet 可以直接查找这些统计信息(使用 cAdvisor 中的代码)。无论这些统计信息如何到达,kubelet 都会通过 metrics-server 资源度量 API 公开聚合的 Pod 资源使用统计信息。此 API 在 kubelet 的已认证只读端口上的 `metrics/resource/v1beta1` 处提供。
完整度量管道
一个完整的度量管道可以让你访问更丰富的度量指标。Kubernetes 可以通过 Horizontal Pod Autoscaler 等机制,根据集群的当前状态自动扩展或调整集群来响应这些度量指标。监控管道从 kubelet 获取度量指标,然后通过实现 `custom.metrics.k8s.io` 或 `external.metrics.k8s.io` API,通过适配器将它们公开给 Kubernetes。
Kubernetes 旨在与 OpenMetrics 配合使用,OpenMetrics 是 CNCF 可观测性和分析 - 监控项目之一,它建立在 Prometheus 暴露格式之上,并对其进行了谨慎扩展,以几乎 100% 向后兼容的方式。
如果你浏览 CNCF Landscape,你会看到许多监控项目可以与 Kubernetes 配合使用,方法是**抓取**度量数据并使用这些数据来帮助你观察集群。选择适合你需求的工具或工具组合取决于你自己。CNCF 可观测性和分析领域包括开源软件、付费软件即服务以及其他商业产品的混合。
当你设计和实现一个完整的度量管道时,可以将这些监控数据回传给 Kubernetes。例如,HorizontalPodAutoscaler 可以使用处理后的度量数据来计算工作负载组件需要运行多少个 Pod。
将完整的度量管道集成到 Kubernetes 实现中超出了 Kubernetes 文档的范围,因为可能的解决方案范围非常广泛。
监控平台的选择很大程度上取决于你的需求、预算和技术资源。Kubernetes 不推荐任何特定的度量管道;有许多选项可供选择。你的监控系统应该能够处理 OpenMetrics 度量传输标准,并且需要选择最适合你的基础设施平台整体设计和部署的系统。
下一步
了解其他调试工具,包括