跳至主要内容

什么是 Kubernetes 监控?

什么是 Kubernetes 监控?

Kubernetes 监控是分析 Kubernetes 集群内容器性能的流程。Kubernetes 是一种开源容器编排软件,使用称为集群的计算节点来运行容器化应用程序。容器化是一种软件部署和运行时流程,可将应用程序的代码与其在任何基础设施上运行所需的所有文件和库进行捆绑。Kubernetes 监控包括用于收集和可视化集群性能数据的工具和方法。它提供了识别和排查性能问题的见解,以确保应用程序始终按预期运行。Kubernetes 监控非常复杂,因为它涉及在多云环境中管理数千个容器。

为什么 Kubernetes 监控很重要?

通过观察 Kubernetes 集群的运行状况、性能及其他指标,软件团队可以更轻松地解决问题、优化性能并扩展工作负载。Kubernetes 架构中,许多底层服务和组件被抽象化处理,这降低了可观测性。随着应用程序变得越来越复杂,开发人员面临着以下困难:

  • 确保可用性

  • 追踪故障

  • 管理资源

  • 维持性能

  • 优化应用程序运行状况

借助 Kubernetes 监控解决方案,软件团队可以改善资源使用情况、解决配置错误、提高性能并节省成本。开发人员可以更自信地诊断问题,并防止潜在故障影响用户体验。强大的 Kubernetes 监控工具还允许组织增强集群、节点、Pod 和服务的安全性。

哪些 Kubernetes 组件需要监控?

Kubernetes 平台由可以托管多个 Pod 的节点组成。它通过将工作负载划分并委派给各个组件来协调容器化应用程序的部署。每个组件都有其特定功能,但各组件之间相互依存,共同确保应用程序的正常运行。下面介绍主要组件。

容器组(pod)

Kubernetes Pod 是 Kubernetes 架构中最基本的单元。它可以容纳一个或多个容器。Kubernetes 并不直接运行容器化应用程序,而是将其运行在 Pod 中,以便更高效地共享资源。这也使扩展和故障恢复变得更加容易。Kubernetes 可以复制 Pod 及其资源和容器,以提高服务可用性。如果某个 Pod 发生故障,其副本可以接管其工作。此外,如果原始 pod 因请求过多而不堪重负,副本可以处理额外的流量。

节点

Kubernetes 节点是运行 pod 并为其提供资源的物理机或虚拟机。Kubernetes 节点简化了其所管理的 pod 的资源分配、通信和编排。所有节点都包含:

  • 一个名为 kubelet 的软件组件,可确保所有容器都在其 pod 中运行

  • 组件 kube-proxy,可简化 pod 与控制面板之间的通信。

  • 一种容器运行时服务,负责为容器化应用程序配置资源,并在整个容器生命周期内管理其运行。

集群

Kubernetes 集群是一组可大规模运行容器化应用程序的计算服务。安装 Kubernetes 后,您将获得一个 Kubernetes 集群,其中至少包含一个节点、一个或多个 pod 以及一个控制面板。要构建具备故障恢复能力的应用程序,您可以备份整个 Kubernetes 集群,包括所有已部署的节点。

Kubernetes 控制面板

Kubernetes 控制面板负责管理并响应来自 Kubernetes pod 的请求。它执行策略、分配资源、创建备份,并在集群节点之间分配工作负载。例如,控制面板可以根据 Kubernetes 节点的容量,将工作负载分配给相应节点。在云端部署 Kubernetes 时,控制面板还充当中介,以确保对云资源的访问。这些服务使控制面板能够管理集群节点。

  • kube-APIServer 允许用户通过应用程序编程接口(API)与 Kubernetes 功能进行交互。

  • kube-controller-manager 是一项服务,用于协调平台中节点、Pod 及其他组件的流程。

  • etcd 是 Kubernetes 集群数据的备份数据库。

  • kube-scheduler 会找到容量足以运行新 Pod 的节点。

  • cloud-controller-manager 将 Kubernetes 集群连接到第三方云服务。

Kubernetes 监控中的指标有哪些?

Kubernetes 操作涉及各种组件之间多层次、相互交叠的交互,这些交互均可通过指标加以观测。集群运营人员通过衡量以下关键指标来排查问题、扩展工作负载、配置资源等。

Kubernetes 控制面板指标

衡量 Kubernetes 控制面板的指标,可全面了解集群组件的运行状况和性能。Kubernetes 运营人员通过执行集群监控来获取相关信息,例如运行中的节点数量、集群资源利用率,以及 Pod 是否已分配至正确的节点。

节点指标

节点指标揭示了集群中 Kubernetes 节点的就绪状态、网络容量、CPU 及内存使用情况。Kubernetes 内置了节点指标代理,用于收集指标并将其发送回运营人员。监控 Kubernetes 节点指标可确保始终有可用节点来处理不断增长的服务请求。

Pod 指标

Pod 指标提供有关 Pod 运行状况、可用性和状态的见解。还可帮助 Kubernetes 运营人员了解 Pod 和应用程序的行为。例如,Pod 配置错误可能导致性能问题,使应用程序无法正常运行或出现延迟。

通过分析 kubelet 收集的监控数据,软件团队可以获取有关 Kubernetes Pod 运行状况的更多信息。kubelet 会探测所有容器的就绪状态、存活状态和启动状态。

  • 就绪探针(Readiness)用于指示所有 Pod 是否已准备好接受传入请求。如果有任何容器尚未就绪,则该 Pod 将从服务中移除。

  • 存活探针(Liveness)用于检测已无响应且需要重启的容器。

  • 启动状态检查容器是否已成功启动。

容器指标

监控容器指标可确保每个容器在其分配的资源限制内运行。例如,这些指标会报告每个容器的 CPU 使用率、内存利用率和网络带宽。这些指标可帮助软件团队排查 Pod 内的资源分配问题。

应用程序指标

应用程序指标阐明了在 Kubernetes 环境中运行的软件的逻辑与功能层面。例如,您可以使用 Kubernetes 在云端部署流媒体应用程序。借助应用程序指标,您可以了解用户与应用程序的交互方式、使用时长以及页面元素的加载速度。

资源利用率

节点和 Pod 会消耗 CPU、内存、网络、存储及其他集群资源。衡量所使用的资源,可帮助软件工程师提前规避瓶颈问题、加快服务交付并降低成本。例如,可以在必要时为其他节点提供更多的计算资源。

Image shows an example Kubernetes monitoring dashboard with different metrics.

Kubernetes 监控是如何完成的?

有几种方法可以从 Kubernetes 系统收集指标。

Kubernetes 指标 API

Kubernetes 在内部使用指标服务器收集和聚合集群、节点和 Pod 指标。开发人员可以通过建立资源指标管道或完整指标管道来检索指标。两种方法均使用平台提供的 API 来检索 kubelet 收集的数据。资源指标管道提供的数据类型有限,且仅在内存中短期保存。同时,完整的指标管道允许开发人员检索更丰富的数据,以更好地了解集群性能。

DaemonSet

DaemonSet 是一种特殊类型的容器组(pod),用于监控节点内的容器组活动。在 Kubernetes 集群中创建的每个节点上通常都会运行至少一个由 DaemonSet 创建的容器组(pod),只要其主机节点未被销毁,该容器组就会持续保持运行状态。部分 Kubernetes 监控工具利用 DaemonSet 结构,将用于收集指标的 Pod 部署到每个节点。

Kubernetes 仪表板

Kubernetes 仪表板是一个基于 Web 的用户界面,允许开发人员部署容器化应用程序、管理 Kubernetes 资源、观察集群运行状况并解决问题。它提供了适用于开发和测试的基本监控功能,但缺乏全面的 Kubernetes 监控解决方案所能提供的深度。

第三方监控解决方案

有多种解决方案可用于检索、存储和可视化 Kubernetes 指标。这些解决方案可以自动发现部署中的所有 Kubernetes 集群节点和 Pod。它们被设计为驻留在 Kubernetes 节点中的普通 Pod。安装后,监控 Pod 通过与 kubelet 或 cAdvisor 通信来收集关键指标。cAdvisor 是一个开源代理,可从容器级别到集群级别收集性能数据。收集相关指标后,Pod 将数据发送到持久存储,解决方案再将其转换为表格和图表。

Kubernetes 监控面临哪些挑战?

Kubernetes 允许应用程序独立于操作系统和硬件运行和扩展。尽管具有灵活性,但要将从 Kubernetes 活动中收集的原始数据转化为切实可行的见解,仍存在重大挑战。

架构复杂性

监控 Kubernetes 组件及其托管的应用程序的活动需要精确的数据记录、存储和可视化。通常,Kubernetes 运营人员可能需要多个工具才能全面监控集群运行状况。使用 Kubernetes 监控工具还需要具备专业知识、经过专项培训且深入了解 Kubernetes 架构。缺乏相应预算和技术能力的组织可能会发现,监控 Kubernetes 应用程序颇具挑战性。

数据安全

数据安全与隐私是使 Kubernetes 监控进一步复杂化的另一类问题。Kubernetes 监控软件必须检索可观测性数据,并将其存储在独立的数据库中。由于某些 Pod 可能会传输或交换敏感数据,组织需采取预防措施来保护用户隐私并防止未经授权的访问。

可扩展性

随着 Kubernetes 集群规模的扩大,组织必须投资引入不同的监控工具或升级现有工具,以应对不断增加的集群活动。如果缺乏合理规划,扩充监控容量可能会耗尽最初为节点预算的所有 Kubernetes 资源,从而对应用程序的性能和可用性造成负面影响。

Kubernetes 监控最佳实践有哪些?

采用这些实践有助于使 Kubernetes 监控更易于管理、更可持续且更具成本效益。

监控云成本

成本监控是在云端管理 Kubernetes 的重要方面。通过深入了解集群成本,您可以优化资源利用率、设置预算,并就部署做出数据驱动型决策。

为 Pod 添加标签

在复杂的 Kubernetes 环境中导航和搜索特定容器或组件是一项繁琐的工作。根据应用程序或其他参数应用标记和标签,可以缩短搜索时间并加快问题修复速度。

收集用户体验指标

Kubernetes 监控策略主要关注节点、Pod 和集群的性能、可用性及活动情况。但是,评估客户与您的应用程序的交互方式同样重要。这使您能够优化应用内元素、提升用户体验并改善业务成果。

设置警报

配置警报以检测可能中断集群操作的事件,从而实现有效监控。例如,应用程序问题可能导致磁盘利用率飙升至超过正常阈值。及时接收警报,使软件团队能够提前预防问题或快速解决问题。

亚马逊云科技如何提供帮助?

Amazon Elastic Kubernetes Service(Amazon EKS)是一项完全托管的服务,可让您在本地或借助亚马逊云科技云基础设施部署、管理和扩展 Kubernetes 集群。借助 Amazon EKS,您可以:

  • 跨三个可用区运行 Kubernetes 控制面板,以确保高可用性。

  • 使用集成控制台统一集群管理、观察和故障排除。

  • 在 Amazon EC2 竞价型实例上部署节点,以进一步降低成本。

您可以使用多种监控或日志记录工具来监控 Amazon EKS 中的 Kubernetes 数据。您的 Amazon EKS 日志数据可以流式传输到亚马逊云科技服务或合作伙伴工具,以进行数据分析。亚马逊云科技管理控制台中的许多服务都可为排查 Amazon EKS 问题提供数据。

立即创建免费账户,开始在亚马逊云科技上使用 Kubernetes 监控。

Browse all cloud computing concepts

Browse all cloud computing concepts content here:

正在加载
正在加载
正在加载
正在加载
正在加载

Did you find what you were looking for today?

Let us know so we can improve the quality of the content on our pages