本文已超过一年。较旧的文章可能包含过时的内容。检查页面中的信息自发布以来是否已变为不正确。
Kubernetes:监控指南
容器技术正在席卷基础设施世界。虽然容器解决了或简化了基础设施管理流程,但它们也引入了编排方面的重大复杂性。这就是 Kubernetes 来拯救我们的原因。就像指挥家指挥管弦乐队一样,Kubernetes 监督我们的容器集合 - 自动启动、停止、创建和销毁它们,以保持我们的应用程序顺利运行。
Kubernetes 通过创建诸如Pod和Service 等抽象层,大大简化了容器化基础设施的管理。我们不再需要担心应用程序在哪里运行,或者它们是否有足够的资源来正常工作。但这并没有改变这样一个事实,为了确保良好的性能,我们需要监控我们的应用程序、运行它们的容器以及 Kubernetes 本身。
重新思考 Kubernetes 时代的监控
正如容器彻底改变了我们对在虚拟机上运行服务的看法一样,Kubernetes 也改变了我们与容器交互的方式。好消息是,通过适当的监控,Kubernetes 固有的抽象层可以提供对您基础设施的全面视图,即使容器和应用程序不断移动。但是,Kubernetes 监控需要我们重新思考和调整我们的策略,因为它与监控传统的 VM 或物理机等主机有几点不同。
标签变得至关重要
随着容器及其编排完全由 Kubernetes 管理,标签现在是我们与 Pod 和容器交互的唯一方式。这就是为什么它们对于监控绝对至关重要,因为所有指标和事件都将使用 标签 在您的基础设施的不同层进行切片和分析。使用逻辑且易于理解的模式定义您的标签至关重要,这样您的指标才会尽可能有用。
现在需要监控的组件更多了
在传统的以主机为中心的基础架构中,我们习惯于仅监控两个层:应用程序和运行它们的主机。现在,中间有了容器,并且 Kubernetes 本身也需要被监控,因此有四个不同的组件需要监控并从中收集指标。
应用程序不断移动
Kubernetes 根据调度策略动态地调度应用程序,因此您并不总是知道应用程序在哪里运行。但它们仍然需要被监控。这就是为什么必须使用具有服务发现功能的监控系统或工具。它将自动调整指标收集以适应移动的容器,以便可以持续监控应用程序而不会中断。
为分布式集群做好准备
Kubernetes 具有能力将容器化应用程序分布在多个数据中心,甚至可能是不同的云提供商之间。这意味着必须在所有这些不同的来源之间收集和汇总指标。
有关 Kubernetes 固有的所有这些新的监控挑战以及如何克服它们的更多详细信息,我们最近发布了一份深入的 Kubernetes 监控指南。该系列的第一部分介绍了如何使您的监控策略适应 Kubernetes 时代。
要监控的指标
无论您是使用 Heapster 数据,还是使用与 Kubernetes 及其不同 API 集成的监控工具,都有几种关键类型的指标需要密切跟踪
- 正在运行的 Pod 及其部署
- 常见的资源指标,例如 CPU、内存使用率和磁盘 I/O
- 容器原生的 指标
- 您的监控工具中具有服务发现功能的应用程序指标
所有这些指标都应使用 Kubernetes 标签进行汇总,并与来自 Kubernetes 和容器技术的事件相关联。
我们关于 Kubernetes 监控系列的第 2 部分将引导您了解所有需要收集和跟踪的数据。
收集这些指标
无论您是想通过组合 Heapster、存储后端和图形工具来跟踪这些关键性能指标,还是通过将监控工具与您的基础设施的不同组件集成,关于 Kubernetes 指标收集的第 3 部分都将涵盖您所需的内容。
起航!
使用 Kubernetes 可以大大简化容器管理。但这要求我们从多个方面重新思考我们的监控策略,并确保正确收集、汇总和跟踪来自不同组件的所有关键指标。我们希望我们的监控指南将帮助您有效地监控您的 Kubernetes 集群。欢迎提出反馈和建议。
- 在 GitHub 上参与 Kubernetes 项目
- 在 Stack Overflow 上发布问题(或回答问题)
- 在 Slack 上与社区联系
- 在 Twitter @Kubernetesio 上关注我们以获取最新更新