什么是 Kubernetes 监控?

2023 年 7 月 31 日

什么是 Kubernetes 监控?

Kubernetes 监控涉及收集和分析与 Kubernetes 集群内运行的容器化应用程序的运行状况、性能和成本特征相关的数据。

Kubernetes,也称为 K8s 或 kube,是一个容器编排平台,用于调度和自动化容器化应用程序的部署、管理和扩展。该项目最初由 Google 设计,现在由云原生计算基金会 (CNCF) 维护。

通过监控 Kubernetes 集群,管理员和用户可以跟踪运行时间、集群资源的使用情况以及集群组件之间的交互等信息。监控有助于快速识别资源不足、故障、无法启动的 Pod 以及无法加入集群的节点等问题。

作为云原生微服务交付的 Kubernetes 上的应用程序具有多出一个数量级的相互通信组件。现代架构分布在多个实例甚至位置中,为监控、警报和故障排除的日常任务增加了新的复杂性。

此外,容器的短暂性可能会妨碍故障排除工作。容器的存续时间通常与其中运行的进程一样长,并在该进程终止时消失。这是容器故障排除中最具挑战性的部分之一。当容器死亡或被重新安排到替代节点时,事件响应所需的详细信息可能不再存在。

尽管 Kubernetes 具有内置的集群操作程序来监控集群并根据 Pod 的运行发送警报,但开源工具和第三方监控解决方案有助于提供对 K8s 环境的全面可见性。

高速公路鸟瞰图

在云端保持清醒头脑 


获取每周 Think 时事通讯,了解有关在 AI 时代优化多云设置的专家指导。

Kubernetes 监控的益处

适当的 Kubernetes 监控具有一系列优点,包括保持应用程序性能的稳定性和响应能力,以及增强安全性和合规性。

性能优化

通过跟踪和分析 CPU 消耗、内存使用情况、网络流量和响应时间等指标,可以识别效率低下的领域,优化资源分配并微调 Kubernetes 基础架构以获得最佳性能。

这可以提高应用程序响应能力并提供更好的用户体验。

高效利用资源

通过监控 CPU 使用率、内存消耗和网络流量等资源使用情况指标,可以识别未充分利用或过度利用的 Kubernetes 节点,优化资源分配,并就基础架构扩展做出明智决策。

这有助于确保应用程序拥有必要的资源来以最佳方式运行,并具有降低成本的额外好处。

主动问题检测

警报和通知有助于在 Kubernetes 问题导致中断或停机之前主动识别和应对这些问题的根本原因。

最终获得更好的系统稳定性,以及使潜在问题对应用程序和用户的影响最小。

迅速地进行故障排除和调试

监控日志、事件和指标有助于快速识别和诊断问题,例如 Pod 故障、资源限制、网络问题或应用程序错误。

通过加快调试过程,可以减少停机时间,并保持应用程序的可用性。

容量规划和可扩展性

通过分析历史数据和监控资源利用率趋势,可以更好地预测未来的资源需求,确定何时需要更多 Kubernetes 资源,并相应地规划扩展集群。

最终,工作负载需求的增加不会导致资源短缺。

增强安全性和合规性

监控 Kubernetes 日志、网络流量和访问模式可以更轻松地识别异常活动、潜在漏洞和未经授权的访问尝试。

此外,确保实施适当的安全控制和政策并对其进行积极监控,有助于保持标准和法规的合规性。

应监控哪些 K8s 指标

对 Kubernetes 堆栈的完全可见性需要收集有关不断创建、销毁和相互调用的容器的遥测数据,同时还需要收集 Kubernetes 集群本身的遥测数据。

集群级监控

在集群监控方面,有几个集群级指标需要重点关注,它们有助于确定 Kubernetes 集群的整体健康状况。

节点功能:监控所有集群节点是否正常工作以及以何种容量运行,有助于确定运行集群所需的云资源。

节点可用性:监控有多少集群节点可用,有助于确定正在为哪些云资源付费(如果使用 AWS 或 Microsoft Azure 等云供应商)以及集群的使用方式。

节点资源使用情况:监控整个集群如何使用资源(内存、CPU、带宽和磁盘使用情况)有助于决定是否增加或减少集群中节点的大小或数量。

正在运行的 pod 数量:监控运行中的 pod 可显示可用节点的数量是否足够,以及在节点出现故障时,它们是否能处理整个 pod 的工作负载。

Pod 级监控

Pod 级监控对于确保 Kubernetes 集群中的各个 Pod 正常运行是必要的。这涉及查看三种类型的指标:Kubernetes 指标、容器指标和应用程序指标。.

1. Kubernetes 指标

监控 Kubernetes 指标有助于确保 Kubernetes 部署中的所有 Pod 都正常运行。

Pod 实例数量:如果某个 Pod 的当前实例数量与预期数量相比偏低,则集群可能会出现资源不足。

Pod 状态:了解 Pod 是否正在运行,以及有多少 Pod 处于暂挂、故障或终止状态,可以提供对其可用性和稳定性的可见性。

Pod 重启次数:监控 pod 重启的次数可以指示 pod 内应用程序的稳定性。如果频繁重启,则可能表明崩溃或资源限制等潜在问题。

CPU 使用率:监控 pod 的 CPU 消耗有助于识别潜在的性能瓶颈并确保 pod 具有足够的处理资源。

内存使用情况:监控 Pod 的内存消耗有助于检测可能影响应用程序稳定性的内存泄漏或内存使用过多。

网络使用情况:监控 pod 发送/接收的字节数可以深入了解其通信模式,并有助于识别任何网络问题。

Kubernetes 指标还包括运行状况检查、网络数据以及正在进行的部署的进展情况(即实例数量从旧版本更改为新版本)。

2. 容器指标

监控 pod 容器指标有助于确定您与所配置的资源限制的接近程度。这些指标还让您可以检测出卡在 CrashLoopBackoff 状态下的 pod。

CPU 使用率/调速:监控正在运行的容器如何消耗 CPU 有助于识别那些资源密集型容器或产生瓶颈的容器,这些容器可能会影响集群的整体性能。跟踪 CPU 节流指标可突出显示容器的 CPU 使用量是否因资源限制或错误配置而受到限制。

内存使用情况:监控正在运行的容器的内存消耗情况,让您注意到内存泄漏、内存使用过多或内存分配不足等问题,这些问题可能会影响容器稳定性和整体系统性能。

网络流量/错误:监控容器的网络流量以及数据包丢失或连接失败等错误,有助于评估它们的通信模式、过度的网络使用或意外的流量峰值。

3. 应用程序指标

监控应用程序指标有助于衡量 Kubernetes Pod 内运行的应用程序的性能和可用性。这些指标通常由 Kubernetes 应用程序本身开发,并与它涉及的业务规则相关,例如延迟、响应能力、错误率和响应时间。

AI 学院

利用混合云实现 AI 就绪

本课程由 IBM 资深思想领袖带领,旨在帮助企业领导者获得所需的知识,以便划分可以推动增长的 AI 投资的优先级。

Kubernetes 监控最佳实践

以下是成功监控 Kubernetes 环境时需要考虑的几种最佳实践。

使用 Kubernetes DaemonSet:通过 DaemonSet,您可以部署一个代理,来监视 Kubernetes 环境的每个节点以及整个 Kubernetes 集群中该节点上的所有资源。守护进程有助于确保主机出现并准备好提供指标。

巧妙利用标签:创建一个合乎逻辑、一致且连贯的标签模式,开发运维团队更容易识别不同的组件,并帮助从 Kubernetes 监控实现最大价值。

使用服务发现:Google Kubernetes Engine (GKE) 的服务发现功能可让您持续监控应用程序,即使您不知道它们在哪里运行。它能根据移动容器自动调整指标收集,以便更全面地了解集群的健康状况。

设置警报和通知:为 CPU 或内存利用率等关键指标设置警报,并在这些指标达到特定阈值时收到通知。具有智能警报功能的监控工具只针对有意义的事件或变化发送警报,从而最大限度地减少警报疲劳。

监控控制平面元素:定期监控 Kubernetes 控制平面元素,例如 API 服务器、kube-dns、kubelet、kube-proxy、etcd 和控制器管理器,有助于确保集群服务平稳运行。

监控用户体验:虽然不是在 Kubernetes 平台中进行本地测量,但监控用户体验有时可以在集群内发现问题之前提醒您。

使用内置和开源工具:无论您的用例如何,都可以利用内置的 Kubernetes 监控工具,例如 Kubernetes Dashboard、cAdvisor (Container Advisor) 和 Kube-state-metrics,以及流行的开源工具,包括 Prometheus、Grafana、Jaeger 和 Elastic Stack(以前称为 ELK Stack)。除了部署、故障排除和监控之外,这些工具还提供附加功能,例如数据可视化以及收集和存储来自各种来源的时间序列指标。

使用基于 SaaS 的 K8s 监控解决方案:为了简化 Kubernetes 管理、基础设施开发和成本计算,以及接收定期更新,请使用内置自动化功能、基于 SaaS 的监控系统,而不是本地部署的监控系统。

相关解决方案
Kubernetes 监控 — IBM Instana

自动观测、监控和修复整个 Kubernetes 集群,以提高应用程序的性能和可用性。

探索 IBM Instana
云咨询服务

利用我们的云服务和咨询服务,可对任何平台上的应用程序持续进行现代化改造,加速推进业务敏捷性和增长。

深入了解我们的云咨询服务
容器解决方案

容器解决方案能够运行和扩展容器化工作负载,并提供安全性、开源创新和快速部署。

深入了解容器
采取下一步行动

IBM Instana Observability 提供自动化的 Kubernetes 可观测性和 APM 功能,旨在监控所有 Kubernetes 发行版的整个 Kubernetes 应用程序堆栈—从节点和 Pod 到容器和应用程序。

深入了解 IBM Instana Observability 体验 Instana