微服务——现在是我们构建基础设施的事实上的选择——自然地为容器铺平了道路。借助Docker和Kubernetes等容器编排工具,组织现在可以更快、更大规模地发布应用程序。随着所有这些功能和自动化的出现,挑战也随之而来,尤其是在保持对这个临时基础设施的可见性方面。
监控Kubernetes工作负载
Kubernetes很复杂,(要准确了解Kubernetes是什么以及它是如何工作的,请阅读我们关于Kubernetes的完整指南)。要成功使用它,需要同时监控多个组件。为了使您的监控策略更容易,请将监控操作分成几个区域,每个部分都指代Kubernetes环境的一个单独层。然后从上到下分解对工作负载的监控:集群、Pod、应用程序,最后是最终用户体验。
监控Kubernetes集群
集群是Kubernetes的最高级别组成部分。大多数Kubernetes安装只有一个集群。这就是为什么当您监控集群时,您可以获得所有区域的完整视图。并且可以轻松确定组成集群的pod、节点和应用程序的运行状况。
使用联合部署多个集群时,必须单独监控每个集群。您将在集群级别监控的区域是:
监控KubernetesPod
集群监控提供了Kubernetes环境的宏观视图,但从单个pod收集数据也是必不可少的。它揭示了各个pod的健康状况以及它们所托管的工作负载。您可以更清晰地了解集群之外的更细粒度的Pod性能。在这里您将监控:
监控在Kubernetes中运行的应用程序
应用程序不是Kubernetes的一部分,但想要托管一个应用程序是使用Kubernetes的重点。这就是为什么监控托管在集群上的应用程序对于成功来说是不可或缺的。应用程序监控揭示的问题可能是Kubernetes环境或应用程序代码中的问题。
通过监控应用程序,您可以识别故障并立即解决它们。从监控开始:
运行Kubernetes时监控最终用户体验
最终用户体验,如应用程序,在技术上不是Kubernetes平台的一部分。应用程序的总体目标是为最终用户提供积极的体验,并且应该成为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指标可快速识别常见问题,例如带宽垄断应用程序或识别影响深远的容器级网络错误。
本文来源:国外服务器--Kubernetes监控(kubernetes监控方案)
本文地址:https://www.idcbaba.com/guowai/4800.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



