Kubernetes监控(kubernetes监控方案)

Kubernetes监控(kubernetes监控方案)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-04-17
文章简介

微服务——现在是我们构建基础设施的事实上的选择——自然地为容器铺平了道路。借助Docker和Kubernetes等容器编排工具,组织现在可以更快、更大规模地发布应用程序。随着所有这些功能和自动化的出现

2025阿里云双十一服务器活动

微服务——现在是我们构建基础设施的事实上的选择——自然地为容器铺平了道路。借助Docker和Kubernetes等容器编排工具,组织现在可以更快、更大规模地发布应用程序。随着所有这些功能和自动化的出现,挑战也随之而来,尤其是在保持对这个临时基础设施的可见性方面。

监控Kubernetes工作负载

Kubernetes很复杂,(要准确了解Kubernetes是什么以及它是如何工作的,请阅读我们关于Kubernetes的完整指南)。要成功使用它,需要同时监控多个组件。为了使您的监控策略更容易,请将监控操作分成几个区域,每个部分都指代Kubernetes环境的一个单独层。然后从上到下分解对工作负载的监控:集群、Pod、应用程序,最后是最终用户体验。

监控Kubernetes集群

集群是Kubernetes的最高级别组成部分。大多数Kubernetes安装只有一个集群。这就是为什么当您监控集群时,您可以获得所有区域的完整视图。并且可以轻松确定组成集群的pod、节点和应用程序的运行状况。

使用联合部署多个集群时,必须单独监控每个集群。您将在集群级别监控的区域是:

  • 不成功的Pod:失败和中止的Pod是Kubernetes进程的正常部分。当一个pod应该以更高效的水平工作或处于非活动状态时,调查pod故障异常背后的原因至关重要。
  • 节点负载:跟踪每个节点上的负载对于监控效率是不可或缺的。某些节点的使用量可能比其他节点多得多。重新平衡负载分配是保持工作负载流畅和有效的关键。这可以通过DaemsonSets完成。
  • 集群使用情况:监控集群基础设施允许您调整正在使用的节点数量,并将资源用于有效地为工作负载供电。您可以看到资源是如何分配的,因此您可以扩大或缩小规模并避免额外基础设施的成本。为此,我们建议学习如何设置容器的内存和CPU使用限制。
  • 监控KubernetesPod

    集群监控提供了Kubernetes环境的宏观视图,但从单个pod收集数据也是必不可少的。它揭示了各个pod的健康状况以及它们所托管的工作负载。您可以更清晰地了解集群之外的更细粒度的Pod性能。在这里您将监控:

  • pod实例总数:需要有足够的pod实例以确保高可用性。这种方式不会浪费托管带宽,并且您不会运行比需要更多的pod实例。
  • Pod部署:监控Pod部署可让您查看是否有任何错误配置可能会降低Pod的可用性。密切关注资源如何分配到节点至关重要。
  • 实际pod实例:监控每个pod正在运行的实例数量与您预期运行的实例数量将揭示如何重新分配资源以实现pod实例方面的所需状态。如果您看到不同的指标,ReplicaSets可能配置错误,因此定期分析这些指标很重要。
  • 监控在Kubernetes中运行的应用程序

    应用程序不是Kubernetes的一部分,但想要托管一个应用程序是使用Kubernetes的重点。这就是为什么监控托管在集群上的应用程序对于成功来说是不可或缺的。应用程序监控揭示的问题可能是Kubernetes环境或应用程序代码中的问题。

    通过监控应用程序,您可以识别故障并立即解决它们。从监控开始:

  • 错误:如果发生错误,您可以在监控时快速找到它,并在它影响最终用户之前解决它。
  • 事务跟踪:如果应用程序遇到可用性或性能问题,事务跟踪可帮助您进行故障排除。
  • 应用程序响应能力:您可以监控应用程序响应请求所需的时间。您可以查看他们是否能够处理当前的工作负载,或者他们是否正在努力维持性能。
  • 应用程序可用性:监控应用程序是否处于活动状态和启动状态,并有效响应。
  • 运行Kubernetes时监控最终用户体验

    最终用户体验,如应用程序,在技术上不是Kubernetes平台的一部分。应用程序的总体目标是为最终用户提供积极的体验,并且应该成为Kubernetes监控策略的一部分。

    收集数据将使您了解应用程序的性能、响应能力和可用性。进行真实用户和综合监控对于了解用户如何与Kubernetes工作负载交互至关重要。它让您知道是否需要进行任何调整或调整,以增强可用性并改进前端。

    在云环境中监控Kubernetes

    当Kubernetes在云中运行时,在规划监控策略时需要考虑一些特定因素。在云中,您还必须监控:

  • IAM事件:您必须监控IAM活动。这包括权限更改和登录,这是基于云的安装或环境中的安全最佳实践。
  • 云API:云提供商有自己的API,您的Kubernetes安装使用它来请求资源,因此需要对其进行监控。
  • 成本:云上的成本会迅速增加。成本监控可帮助您制定预算并确保您不会在基于云的Kubernetes服务上超支。
  • 网络性能:在基于云的安装中,网络可能成为应用程序性能的最大障碍。如果您定期监控云网络,您可以确保数据按照需要快速移动,从而避免与网络相关的问题。
  • 监控Kubernetes中的指标

    为了在对Kubernetes执行不同类型的监控之外获得对Kubernetes安装的更高可见性,还有几个指标可以让您深入了解应用程序的运行方式。

    通用指标

    Kubernetes监控,kubernetes监控方案

    节点指标

    来自启用Kubernetes节点的操作系统的指标可以让您深入了解各个节点的整体健康状况。您可以监控内存消耗、文件系统活动、CPU负载、使用情况和网络活动。

    Kubelet指标

    为了确保控制平面与运行Kubelet的每个单独节点有效通信,您应该定期监控Kubelet代理。

    Kube-State-Metrics

    您可以获得一个可选的Kubernetes插件,它从名为Kube-State-Metrics的KubernetesAPI生成指标。

    控制器管理器指标

    为确保有效地编排工作负载,您可以监控控制器向外部API发出的请求。这在基于云的Kubernetes部署中至关重要。

    调度程序指标

    如果您想识别和防止延迟,您应该监控调度程序中的延迟。通过这种方式,您可以确保Kubernetes顺利、准时地部署Pod。

    Etcd存储Kubernetes的所有配置数据。Etcd指标将为您提供对集群状况的基本可见性。

    容器指标

    专门查看单个容器将允许您监控确切的资源消耗,而不是更一般的Kubernetes指标。CAdvisor允许您分析容器内发生的资源使用情况。

    API服务器指标

    API将Kubernetes前端保持在一起,因此这些指标对于获取API服务器的可见性至关重要,从而了解整个前端。

    记录数据

    当您发现指标揭示的问题时,日志有助于检查。它们为您提供准确且无价的信息,提供比指标更多的详细信息。登录Kubernetes的大多数组件有很多选项。应用程序还会生成日志数据。

    Kubernetes监控挑战、解决方案和技巧

    将应用程序从单体基础架构迁移到由Kubernetes管理的微服务是一个漫长而密集的过程。它可能充满陷阱,并且可能被证明容易出错。但要实现更高的可用性、创新、成本效益、可扩展性和敏捷性,这是发展业务的唯一途径,尤其是在云中。由于平台的复杂性,可见性是Kubernetes环境的主要问题,因为查看每个微服务的实时交互具有挑战性。监控是每个企业都需要实践和改进才能取得成功的专业技能。

    一个Kubernetes集群可以被认为是复杂的,因为它有多个服务器和集成的私有和公共云服务。出现问题时,需要检查许多日志、数据和其他因素。传统的单片环境只需要一些日志搜索来确定问题。另一方面,Kubernetes环境有一个或多个与您遇到的问题有关的多个微服务的日志。为了应对这些挑战,我们汇总了以下建议,以有效监控容器化基础设施。

    有效使用Sidecar模式改进Kubernetes中的应用程序监控

    一个关键的最佳实践是利用Kubernetes中基于角色的访问,由单个团队及其监控解决方案提供端到端控制,而无需完全控制集群。利用团队命名空间下的监控解决方案可帮助操作员轻松控制团队范围内基于微服务的容器应用程序的监控。

    他们可以添加额外的监控支持,而无需重建他们的应用程序容器。一种动态的监控方法可以提高可观察性并驱动上下文——如果容器开始出现问题,则无需将其拉下。

    命名空间可观察性

    通过利用SensuGo等开源监控事件管道,运营团队可以获得容器的专用团队视图,以提高对其应用程序的可见性并增加对可能异常的洞察力。这些类型的解决方案为临时基础设施提供动态监控变化。因此,运营商可以通过使用Kubernetes内置的基于角色的访问控制概念来帮助安全地推动协作。

    Kubernetes为资源提供命名空间范围,使各个团队可以完全控制其命名空间下的应用程序。操作员还可以在Kubernetes命名空间中创建容器和Pod,并将其直接映射到代码驱动的监控工具,也可以利用相同的命名空间。

    例如,您可以在开源监控事件管道中拥有一个“关联”命名空间——类似于Kubernetes——这样一个团队就可以使用声明性YAML配置文件的存储库来控制容器并围绕它进行监控。借助RBAC(基于角色的访问控制),您可以通过仅向用户提供必要的访问权限来降低风险,这样他们就不会拥有超出所需的权限。

    将监控工作流程编码到声明性配置文件中,可以让您以自动化的速度进行监控。它可以共享、作为代码处理、审查、编辑和版本化,从而实现高效的多云操作。阅读有关如何使用Prometheus监控Kubernetes的更多信息

    Kubernetes日志最佳实践

    容器化工作负载的应用程序日志聚合是可以改进软件开发的基本最佳实践。由于容器化工作负载的短暂性,集群中生成的日志条目数量可能非常大。

    Fluentd和FluentBit等日志代理——最初由TreasureData开发的跨平台、开源数据收集软件项目——通常用作DaemonSet来收集节点上运行的所有pod的日志,使用日志文件的特权卷挂载由容器运行时存储。这些是集群级工具,用于将日志聚合到Elasticsearch等数据湖中,或将它们发送到Kafka等流处理器解决方案中——您可能希望使用基于功能的角色监控来跟踪在外部运行的这些额外的日志聚合基础设施您的Kubernetes集群。

    使用Kubernetes监控解决方案

    可见性对于企业识别阻碍应用程序性能的容器问题至关重要。您可以更有效地监控在Kubernetespod中运行的容器化应用程序,并根据需要进行扩展或缩减。这就是为什么拥有一个全面的Kubernetes监控解决方案至关重要的原因,它可以让您端到端地了解应用程序的每个组件。从Pod、节点、容器、基础设施、Kubernetes平台,到每个微服务和最终用户设备。

    使用APM监控Kubernetes

    实施应用程序性能监控解决方案(APM)可让企业了解其应用程序并评估整体性能。它组织并提供对Kubernetes集群、Docker容器和容器化应用程序的见解。您可以检查基础架构的基本指标、了解潜在障碍并进行调整。在部署APM监控的容器应用程序时,即时了解内存、CPU和网络利用率以及资源使用情况统计信息。APM指标可快速识别常见问题,例如带宽垄断应用程序或识别影响深远的容器级网络错误。

    标签:
    如何使用专业软件提高数据库性能(提高数据库性能的几种方法)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!