混合云环境中 Kubernetes 可观测性的 6 个有效策略...

news2024/11/24 18:41:41

2023 年,原生云应用程序和平台将快速增长。组织不断努力最大限度地发挥其应用程序的潜力,确保无缝的用户体验并推动业务增长。

混合云环境的兴起以及 Kubernetes 等容器化技术的采用彻底改变了现代应用程序的开发、部署和扩展方式。

在这个数字领域,Kubernetes是大多数云原生应用程序和工作负载的首选平台,并被跨行业采用。

根据 2022 年的报告,96% 的公司已经在其云系统中使用或评估 Kubernetes 的实施。这个流行的开源实用程序对于容器编排和发现、负载平衡和其他功能很有帮助。

 然而,这种转变也带来了一系列新的挑战。

随着应用程序复杂性的增加,对强大的可观察性解决方案的需求也随之增加,使企业能够深入了解其容器化工作负载。Kubernetes 可观察性是在混合云环境中管理和优化容器化应用程序的一个关键方面。

在这篇文中,我们将深入研究 Kubernetes 可观察性,探索六种有效的策略,使企业能够在混合云环境中释放其容器化应用程序的全部潜力。

这些策略以行业专业知识和实际经验为后盾,将为您提供工具和知识,以增强 Kubernetes 部署的可观察性,从而推动业务成功。

了解 Kubernetes 中的可观察性

让我们首先从基础知识开始。

Kubernetes 是管理容器化应用程序的强大工具。但是,尽管其功能强大,但跟踪混合云环境中发生的情况可能很困难。这就是可观察性的用武之地。

可观察性是指在特定环境中收集、分析数据并对其采取行动。在 Kubernetes 上下文中,可观察性是指深入了解 Kubernetes 集群中运行的容器化应用程序的行为、性能和运行状况。

Kubernetes 可观察性基于三个关键支柱:

  1. 日志:日志提供有关 Kubernetes 集群内的行为和事件的有价值的信息。它们捕获重要的详细信息,例如应用程序输出、系统错误和操作事件。分析日志有助于解决问题、了解应用程序行为以及识别模式或异常。
  2. 指标:指标是定量测量,可深入了解 Kubernetes 环境的性能和资源利用率。它们包括 CPU 使用率、内存消耗、网络流量和请求延迟信息。监控和分析指标有助于识别性能瓶颈、规划容量并优化资源分配。
  3. 跟踪:跟踪可以实现对 Kubernetes 应用程序内跨微服务的请求流的端到端可见性。分布式跟踪捕获不同组件之间的计时数据和依赖关系,从而提供对请求路径的全面了解。跟踪有助于识别延迟问题、了解系统依赖性并优化关键路径以提高应用程序性能。

Kubernetes 可观察性过程通常涉及收集和分析来自各种来源的数据,以了解系统的内部状态并提供可操作的情报。通过实施正确的可观察性策略,您可以深入了解您的应用程序和基础设施,这将帮助您:

  • 快速检测并解决问题
  • 提高性能和可靠性
  • 优化资源使用
  • 满足合规要求

IT 团队正在快速采用可观察性流程。到 2026 年, 70% 的组织将成功应用可观察性来缩短决策延迟,同时增加分布式、有组织和简化的数据管理流程。

1.使用集中日志记录和日志聚合

为了深入了解分布式系统,集中式日志记录是一项重要策略。在 Kubernetes 环境中,应用程序跨越多个容器和节点,收集和分析来自各种来源的日志变得至关重要。

集中式日志记录涉及将不同组件的日志合并到一个易于访问的位置。集中式日志记录的重要性在于它能够提供系统行为和性能的整体视图。

通过Kubernetes 日志记录,您可以关联事件并识别 Kubernetes 集群中的模式,从而实现高效的故障排除和根本原因分析。

要在 Kubernetes 中实现集中式日志记录,您可以利用强大的日志聚合工具或云原生解决方案,例如Amazon CloudWatch Logs或 Google Cloud Logging。这些工具提供了可扩展且高效的方法来收集、存储和分析 Kubernetes 集群中的日志。

2. 利用分布式跟踪实现端到端可见性

在微服务分布在多个容器和节点的复杂 Kubernetes 环境中,理解不同组件之间的请求流和交互变得具有挑战性。这就是分布式跟踪发挥作用的地方,它可以在请求遍历各种服务时提供对请求执行路径的端到端可见性。

分布式跟踪允许您跟踪请求从入口点到它涉及的所有微服务的旅程,捕获有关每个步骤的有价值的信息。通过使用跟踪库或代理来检测您的应用程序,您可以生成跟踪数据,揭示每个服务的持续时间、延迟和潜在瓶颈。

在 Kubernetes 中利用分布式跟踪的好处是显着的。

首先,它可以帮助您了解服务之间的依赖关系和关系,从而更好地进行故障排除和性能优化。当请求遇到延迟或错误时,您可以快速识别负责的服务或组件并采取纠正措施。

其次,分布式跟踪允许您测量和监控单个服务的性能及其交互。

通过分析跟踪数据,您可以识别性能瓶颈、检测低效的资源使用情况并优化系统的整体响应能力。这些信息对于容量规划和确保Kubernetes 环境的可扩展性非常宝贵。

有几种流行的分布式跟踪解决方案可用。这些工具提供了有效收集和可视化跟踪数据所需的仪器和基础设施。通过将这些解决方案集成到 Kubernetes 部署中,您可以全面了解微服务的行为并推动持续改进。

3. 将 Kubernetes 与 APM 解决方案集成

为了在 Kubernetes 中实现全面的可观察性,必须将您的环境与应用程序性能监控 (APM) 解决方案集成。APM 解决方案提供超越传统指标和日志的高级监控功能,提供对各个应用程序组件的性能和行为的洞察。

APM 集成的主要好处之一是能够检测和诊断 Kubernetes 应用程序中的性能瓶颈。

借助 APM 解决方案,您可以在请求遍历各种服务时跟踪请求,并识别高延迟或资源争用的区域。有了这些信息,您就可以采取有针对性的行动来优化关键路径并提高整体应用程序性能。

许多 APM 解决方案提供专用的 Kubernetes 集成,可以简化容器化应用程序的监控和管理。这些集成提供了预配置的仪表板、警报和检测库,可简化 Kubernetes 环境中 APM 数据的捕获和分析。

4.使用基于指标的监控

基于指标的监控构成了 Kubernetes 中可观察性的基础。它涉及收集和分析关键指标,以深入了解 Kubernetes 集群和应用程序的运行状况、性能和资源利用率。

当涉及 Kubernetes 中基于指标的监控时,需要考虑几个基本组件:

  • 节点级指标: 监控 Kubernetes 集群中各个节点的资源利用率对于容量规划和基础设施优化至关重要。CPU 使用率、内存使用率、磁盘 I/O 和网络带宽等指标可帮助您识别潜在的资源瓶颈并确保最佳分配。
  • Pod 级指标: Pod 是 Kubernetes 中部署的基本单位。通过监控与 Pod 相关的指标,您可以评估其资源消耗、运行状况和整体性能。关键的 Pod 级别指标包括 CPU 和内存使用情况、网络吞吐量和请求成功率。
  • 容器级指标: pod 内的容器封装了各个应用程序组件。监控容器级指标可帮助您了解特定应用程序服务或进程的资源消耗和行为。CPU 使用率、内存使用率和文件系统利用率等指标可提供对容器性能的深入了解。
  • 应用程序特定的指标:根据应用程序的要求,您可能需要监视特定于您的业务逻辑或域的自定义指标。这些指标可能包括事务率、错误率、缓存命中率或其他相关性能指标。

 基于指标的监控架构图

5. 使用自定义 Kubernetes 事件来增强可观察性

自定义事件在 Kubernetes 组件之间以及 Kubernetes 和外部系统之间进行通信。它们可以发出重要事件的信号,例如部署、扩展操作、配置更改,甚至容器内特定于应用程序的事件。

通过利用自定义事件,您可以在可观察性方面实现多项优势:

  • 主动监控: 自定义事件允许您定义和监控需要注意的特定条件。例如,您可以创建事件来指示资源何时不足、Pod 何时遇到故障或何时超过特定阈值。通过捕获这些事件,您可以在问题升级之前主动检测并解决问题。
  • 上下文信息: 自定义事件可以包含其他上下文信息,有助于排除故障和分析根本原因。您可以附加相关详细信息,例如错误消息、时间戳、受影响的资源或任何其他可深入了解事件重要性的元数据。这种额外的背景有助于更有效地理解和解决问题。
  • 与外部系统集成: Kubernetes 自定义事件可以由外部系统使用,例如监控平台或事件管理工具。集成这些系统允许您根据特定事件触发自动响应或通知。这简化了事件响应流程并确保及时解决关键问题。

要利用自定义Kubernetes 事件,您可以使用 Kubernetes 事件挂钩、自定义控制器,甚至可以使用 Kubernetes API 开发事件驱动的应用程序。

通过定义事件触发器、捕获相关信息并对事件做出反应,您可以建立一个强大的可观察性框架来补充传统的监控方法。

6. 结合综合监控以实现主动可观察性

综合监控模拟用户旅程或代表与应用程序日常交互的特定事务。这些综合测试可以安排在不同的地理位置定期运行,模仿用户行为并测量关键性能指标。

在 Kubernetes 环境中整合综合监控有几个主要好处:

  • 主动问题检测: 综合测试允许您在实际用户受到影响之前检测到问题。通过定期模拟用户交互,您可以识别性能下降、错误或无响应的组件。这种早期检测使您能够主动解决问题并保持应用程序的高可用性。
  • 性能基准测试:综合监控为性能基准测试和 SLA 合规性提供基准。您可以通过从不同位置运行一致的测试来测量正常条件下的响应时间、延迟和可用性。这些基准可作为检测异常和确保最佳性能的参考。
  • 地理洞察:综合测试可以配置为在不同的地理位置运行,从而深入了解不同地区的应用程序的性能。这有助于识别可能影响用户体验的延迟问题或区域差异。通过根据这些见解优化应用程序的性能,您可以确保全球范围内一致的用户体验。

您可以利用专门的工具将综合监控合并到您的 Kubernetes 环境中。这些工具提供了创建和安排综合测试、监控性能指标以及生成报告的功能。

为传统和基于微服务的应用程序获得 Kubernetes 可观察性的一种方法是使用 Datadog、Splunk、Middleware 和 Dynatrace 等第三方工具。该工具捕获指标和事件,提供多个现成的报告、图表和警报以节省时间。

最后

本文探讨了在混合云环境中实现 Kubernetes 可观察性的六种实用策略。

通过利用集中式日志记录和日志聚合、利用分布式跟踪、将 Kubernetes 与 APM 解决方案集成、采用基于指标的监控、合并自定义 Kubernetes 事件和综合监控,您可以增强对 Kubernetes 部署的行为和性能的理解。

实施这些策略将为您的分布式系统提供全面的见解,从而实现高效的故障排除、性能优化、主动问题检测和改进的用户体验。

无论您是运行小规模 Kubernetes 环境还是管理复杂的混合云部署,应用这些策略都将有助于应用程序的成功和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/859711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 搭建分片集群

文章目录 0.10.2 散列插槽0.3 集群伸缩0.3.1 需求分析0.3.1 创建新的 Redis 实例0.3.3 添加新节点到 Redis0.3.4 转移插槽 0.4 故障转移0.4.1 自动故障转移0.4.2 生动故障转移 0.5 RedisTemplate访问分片集群 1. 集群架构2. 准备实例和配置3. 启动4. 创建集群5. 测试 0.1 主从…

刷新缓冲区(标准IO)

标准IO是带缓冲的,输入和输出函数属于行缓冲,stdin、stdin、printf、scanf 1.换行符刷新 2.缓冲区满刷新 3.fflush函数强制刷新 4.程序正常结束

绩效考核,职场人的痛!

绩效,已经成为职场人不能跳过的话题。 绩效作为提高员工和企业效率的有效手段,已经被越来越公司采用,现在,公司里几乎任何一个岗位都会被考核,特别是互联网公司。今天我们以产品经理为例,看看这个岗位的绩效…

苍穹外卖day11笔记

今日首先介绍前端技术Apache ECharts,说明后端需要准备的数据,然后讲解具体统计功能的实现,包括营业额统计、用户统计、订单统计、销量排名。 一、ECharts 是什么 ECharts是一款基于 Javascript 的数据可视化图表库。我们用它来展示图表数…

leetcode每日一练-第121题-买卖股票的最佳时机

一、思路 动态规划 二、解题方法 维护两个变量:一个表示当前最低的股票价格 minPrice,另一个表示当前最大的利润 maxProfit。 遍历数组中的每个价格,对于每个价格,更新 minPrice 和 maxProfit。具体做法是,如果当前…

【Linux】TCP协议——传输层

目录 TCP协议 谈谈可靠性 TCP协议格式 序号与确认序号 窗口大小 六个标志位 确认应答机制(ACK) 超时重传机制 连接管理机制 三次握手 四次挥手 流量控制 滑动窗口 拥塞控制 延迟应答 捎带应答 面向字节流 粘包问题 TCP异常情况 TC…

【RTT驱动框架分析06】-pwn驱动框架分析+pwm驱动实现

pwm pwm应用程序开发 访问 PWM 设备API 应用程序通过 RT-Thread 提供的 PWM 设备管理接口来访问 PWM 设备硬件,相关接口如下所示: 函数描述rt_device_find()根据 PWM 设备名称查找设备获取设备句柄rt_pwm_set()设置 PWM 周期和脉冲宽度rt_pwm_enable…

橙河网络:2023年,我看谁还在做实体行业?

大家好,我是橙河老师,今天讲一讲实体行业。 现在实体行业还好干吗? 肯定是不好干了。 别的不扯,这几年很多大佬,能把老百姓干的事儿都干了。 一天收入上百万的演员,在直播间卖着九块九的东西&#xff0…

学习笔记-JVM-工具包(JVM分析工具)

常用工具 JDK工具 ① jps: JVM Process status tool:JVM进程状态工具,查看进程基本信息 ② jstat: JVM statistics monitoring tool : JVM统计监控工具,查看堆,GC详细信息 ③ jinfo:Java Configuration I…

MATLAB实现两组数据的延时对齐效果

博主在某次实验中,相同的实验条件下分别采集了两组数据,发现两组数据存在一个延时,如下图所示: 本文记录消除这个延时,实现相同数据状态的对齐效果,采用MATLAB自带的xcorr函数实现,具体步骤如下…

vteam透明屏,在场景化应用中,有哪些特点表现?

vteam透明屏是一种新型的显示技术,它采用透明材料制成,可以在显示内容的同时保持背景的透明度。 这种屏幕可以应用于各种领域,如广告、零售、展览等,具有很大的潜力和市场前景。 vteam透明屏的特点之一是其高透明度。与传统的显…

五、web应用程序技术——web功能

文章目录 一、服务器端功能1.1 SQL1.2 XML1.3 web服务 二、客户端功能2.1 HTML2.2 超链接2.3 表单2.4 CSS2.5 JavaScript2.6 文档对象模型2.7 Ajax2.8 JSON2.9 同源策略2.10浏览器拓展技术 一、服务器端功能 早期的web站点由各种静态资源组成,如HTML页面与图片。当用…

主数据管理案例-中国外运

1、 背景介绍及难点分析 作为世界领先的物流行业整合商、端到端的全程供应链解决方案和一站式物流服务提供商,中国外运非常重视信息化建设,先后投资建设了 300多个信息系统,为中国外运的内部管理和业务运作提供 IT 支持和保障。 由于缺乏统一…

当我准备出门时,发现了......我可以用Python实现12306自动买票

前言 不知道大家有没有之前碰到这样的情况,打算去某一个地方当你规划好了时间准备去买票的时候,你想要的那一列往往没有你想要的票了,尤其是国庆七天假和春节半月假,有时候甚至买不到规定计划时间内的票,真的是太烦躁…

数据分析-python学习 (1)numpy相关

内容为:https://juejin.cn/book/7240731597035864121的学习笔记 导包 import numpy as np numpy数组创建 创建全0数组,正态分布、随机数组等就不说了,提供了相应的方法通过已有数据创建有两种 arr1np.array([1,2,3,4,5]) 或者datanp.loadt…

vxe-grid\table 自定义动态列排序设置

实现动态加载的表格数据,根据设置动态控制指定的某些字段排序功能;如下图所示; 代码实现:标签内添加属性; :sort-config"{trigger:cell, defaultSort: {field: , order: desc}, orders:[desc, asc]}" sort-…

LinuxC编程——线程

目录 一、概念二、进程与线程的区别⭐⭐⭐三、线程资源四、函数接口4.1 线程创建4.2 线程退出4.3 线程回收4.3.1 阻塞回收4.3.2 非阻塞回收 4.4 pthread_create之传参4.5 练习 一、概念 是一个轻量级的进程,为了提高系统的性能引入线程。 进程与线程都参与cpu的统一…

这些可以将音频翻译成文字的工具你值得拥有

你是否曾经遇到过这样的情景:你收到了一段包含外国人发言内容的会议音频,但是由于自己的外语水平一般而却无法理解其中的外语内容?别担心,现在有一些神奇的翻译音频文件的软件可以帮助你解决这个问题!如果你还不知道翻…

电脑必备的3款简单好用小工具,建议收藏使用!

​在当今社会,电脑已成为我们工作、学习和娱乐的重要工具。除了拥有一台电脑,一些小工具的加入可以大大提升我们的效率和使用体验。 整理了 3 款比较实用的软件,个人觉得非常实用。,它们将让你的电脑使用更加便捷、高效。不管你是…

使用Prisma访问数据库

首先,确保你已经安装了 Prisma CLI。你可以使用以下命令进行安装: npm install prisma --save-dev接下来,你需要初始化 Prisma 项目,最后一个参数需要指定数据库类型,如postgresql,sqlist,mysql…