混合云环境实现K8S可观测的6大策略
2023年,原生云应用及平台发展迅猛。大量企业都在努力发挥其应用程序的最大潜力,以确保极致的用户体验并推动业务增长。
混合云环境的兴起和容器化技术(如Kubernetes)的采用彻底改变了现代应用程序的开发、部署和扩展方式。
在这个数字舞台上,K8S是大多数云原生应用程序和工作负载的首选平台,这个流行的开源工具有助于容器编排和发现、负载平衡和其他功能。根据一份报告,96%的公司目前已在其云系统中使用或正在评估K8S的实施。
然而,随之而来的是一系列新的挑战。随着应用程序复杂性的增加,对有效的可观测性解决方案的需求也在增加,这些解决方案使企业能够深入了解其容器化的工作负载,也是混合云环境中管理和优化容器化应用程序的一个重要前提。
本文将深入K8S的可观测性,探索六种有效的策略,这些策略可以让企业在混合云环境中释放其容器化应用程序的全部潜力。
1、使用集群日志记录与日志聚合
为了深入了解分布式系统,集群日志记录是一个基本策略。在K8S环境中,应用程序会跨越多个容器和节点,因此收集和分析各种来源的日志就变得至关重要。
集群日志记录包括将不同组件的日志整合到一个易于访问的位置。集群日志记录的重要性在于它能够提供系统行为和性能的整体视图。
利用K8S集群日志,您可以关联事件并识别K8S集群中的模式,从而实现高效的故障排除和故障原因分析。
想要在K8S中实现集群日志记录,您可以利用强大的日志聚合工具或云原生解决方案,如亚马逊观测日志或者谷歌云日志。这些工具提供了可扩展且高效的方法来收集、存储和分析来自 K8S 集群的日志。
2、利用分布式追踪实现端到端可见性
在微服务分布在多个容器和节点上的复杂 K8S 环境中,了解不同组件之间的请求和交互流很具有挑战性。这就是分布式追踪发挥作用的地方——在请求遍历各种服务时提供对请求执行路径的端到端可见性。
分布式追踪允许您追踪请求从入口到接触的所有微服务的流程,从而捕获有关每个步骤的宝贵信息。通过使用追踪库或代理检测应用程序,可以生成追踪数据,以显示每个服务的持续时间、延迟和潜在瓶颈。
在 Kubernetes 中利用分布式追踪的好处是非常显著的。
首先,它可以帮助您了解服务之间的依赖关系,从而实现更好的故障排除和性能优化。当请求出现延迟或错误时,您可以快速确定出现问题的服务或组件并采取纠正措施。
其次,分布式追踪允许您测量和监视各个服务及其交互的性能。
通过分析追踪数据,您可以识别性能瓶颈,检测低效的资源使用情况,并优化系统的整体响应能力。这些信息对于容器规划和确保 Kubernetes 环境中的可扩展性非常重要。
对企业而言,可以选择一些流行的分布式追踪解决方案。这些工具为有效收集和可视化追踪数据提供了必要的工具和基础设施。通过将这些解决方案集成到您的K8S部署中,可以全面了解您的微服务行为,并推动持续改进。
3、将K8S与APM解决方案集成
为了在K8S中实现全面的可观测性,有必要将您的环境与应用性能监控(APM)解决方案进行集成。APM解决方案提供了超越传统指标和日志的高级监控功能,能够洞察各个应用程序组件的性能和行为。
APM集成的主要好处之一是能够检测和诊断K8S应用程序中的性能瓶颈。
借助APM解决方案,您可以在请求通过各种服务时对其进行跟踪,并确定高延迟或资源冲突的区间。有了这些信息,就可以采取有针对性的措施来优化关键路径并提高应用程序的整体性能。
许多APM解决方案提供专门的K8S集成,简化了对容器化应用程序的监控和管理。这些集成提供了预配置的仪表板、警报和工具库,简化了K8S环境中APM数据的捕获和分析。
4、使用基于指标的监控
基于指标的监控构成了K8S中可观测性的基础。它包括收集和分析关键指标,这些指标提供了对您的K8S集群和应用程序的健康、性能和资源利用率的洞察。
谈到Kubernetes中基于指标的监控,有几个基本组件需要考虑:
节点级指标:监控Kubernetes集群中单个节点的资源利用率对于容量规划和基础设施优化至关重要。CPU使用率、内存使用率、磁盘I/O和网络带宽等指标有助于您识别潜在的资源瓶颈,并确保最佳分配。
Pod级指标:Pod是Kubernetes的基本部署单位。通过监控与pod相关的指标,您可以评估它们的资源消耗、运行状况和整体性能。关键的pod级指标包括CPU和内存使用情况、网络吞吐量和请求成功率。
容器级指标:pod中的容器封装了单独的应用程序组件。监控容器级指标有助于您了解特定应用程序服务或流程的资源消耗和行为。CPU使用率、内存使用率和文件系统使用率等指标提供了对容器性能的洞察。
- 特定应用指标:根据应用程序的需求,您可能需要监控特定业务逻辑或领域的定制指标。这些指标可以包括交互率、错误率、缓存命中率或其他相关的性能指标。
5、自定义Kubernetes事件增强可观测性
自定义事件在K8S组件之间以及K8S和外部系统之间进行通信。它们可以发出重要事件的信号,比如部署、伸缩操作、配置更改,甚至是容器中特定于应用程序的事件。
通过利用自定义事件,您可以在可观测性方面获得几个好处:
- 主动监控:自定义事件允许您定义和监控需要注意的特定条件。例如可以创建事件来指示何时资源不足、何时pod出现故障或何时超过特定阈值。通过捕获这些事件,您可以在问题升级之前主动检测并解决问题。
- 上下文信息:自定义事件包括有助于故障排除和分析根本原因的附加上下文信息。您可以附加相关的详细信息,例如错误消息、时间戳、受影响的资源或任何其他元数据,以便深入了解事件的重要性。这种额外的背景有助于更有效地理解和解决问题。
- 与外部系统的集成:K8S自定义事件可以由外部系统使用,例如监控平台或事故管理工具。集成这些系统允许您基于特定事件触发自动响应或通知。这简化了事件响应流程,并确保及时解决关键问题。
利用自定义K8S事件,您可以使用K8S事件挂钩(event hooks)、定制控制器,甚至使用K8S API开发您的事件驱动应用程序。通过定义事件触发器、捕获相关信息并对事件做出反应,您可以建立一个健壮的可观测性框架,补充传统的监视方法。
6、整合综合监控实现可观测性主动发现
综合监控模拟用户行为或代表与应用程序日常交互的特定事务。这些综合监控可以设置在不同的位置定期运行,模拟用户行为并测量关键性能指标。
在您的K8S环境中集成合成监控有几个主要好处:
- 主动问题检测:综合监控允许您在真实用户受到影响之前发现问题。通过定期模拟用户交互,您可以识别性能下降、错误或无响应的组件。这种早期检测使您能够主动解决问题并保持高应用程序可用性。
- 性能基准测试:综合监控为性能基准和SLA合规性提供了基线。通过从不同的位置运行一致的测试,您可以测量正常情况下的响应时间、延迟和可用性。这些基准可作为检测异常和确保最佳性能的参考。
- 位置监测:可以将综合监控配置为从不同的位置运行,从而在不同区域深入了解应用程序的性能。这有助于识别可能影响用户体验的延迟问题或位置差异。通过这些信息优化您的应用性能,您可以确保全球一致的用户体验。
可以利用专业工具将综合监控整合进你的K8S环境。这些工具提供了创建和部署综合监控、监控性能指标以及生成报告的能力。
为基于微服务的应用程序获得 K8S 可观测性的一种方法是使用 Datadog、Splunk、Middleware 和 Dynatrace 等第三方工具。这些工具能够捕获指标和事件,提供多个现成的报告、图表和警报以节省时间。
7、支持微服务、k8s的开发工具
市场上的开发工具有很多,JNPF快速开发平台是一款基于SpringBoot+Vue3的全栈开发平台,采用微服务、前后端分离架构,基于可视化流程建模、表单建模、报表建模工具,快速构建业务应用,平台即可本地化部署,也支持K8S部署。
通过可视化拖拽的方式,传统模式下需要2 周完成开发的应用,用JNPF只要 2小时。用JNPF搭建应用,你只需要关注业务本身。数据存储、运行环境、服务器、网络安全等,平台为你全部搞定。
还配置了图表引擎、接口引擎、门户引擎、组织用户引擎等可视化功能引擎,基本实现页面UI的可视化搭建。内置有百种功能控件及使用模板,使得在拖拉拽的简单操作下,也能大限度满足用户个性化需求。体验地址:https://www.jnpfsoft.com/?csdn
由于篇幅有限,这边仅做带过介绍,可以自行体验了解。
8、总结
通过利用以上提到的6种策略,您可以增强对 K8S 部署的行为和性能的理解。实施这些策略将提供对分布式系统的全面洞察,从而实现高效的故障排除、性能优化、主动问题检测和改进的用户体验。
无论您是在运营小规模 K8S 环境还是管理复杂的混合云部署,应用这些策略都将有助于应用程序的成功和可靠性的提升。
相关文章:

混合云环境实现K8S可观测的6大策略
2023年,原生云应用及平台发展迅猛。大量企业都在努力发挥其应用程序的最大潜力,以确保极致的用户体验并推动业务增长。 混合云环境的兴起和容器化技术(如Kubernetes)的采用彻底改变了现代应用程序的开发、部署和扩展方式。 在这个数字舞台上,…...

音视频 FFmpeg命令行搭建
文章目录 一、配置二、测试 一、配置 以FFmpeg4.2.1 win32为例 解压ffmpeg-4.2.1-win32-shared.zip 拷⻉可执⾏⽂件到C:\Windows拷⻉动态链接库到C:\Windows\SysWOW64 注:WoW64 (Windows On Windows64)是⼀个Windows操作系统的⼦系统,被设计⽤来处理许…...
ORACLE wallet实现无需输入用户名与密码登陆数据库 注意修改目录权限
wallet权限 linux 777 windows 需要修改.lck文件的owner 在ORACLE 10G前,我们在SHELL或JDBC中连接数据库时,都需要输入用户名与密码,并且都是明文。从1OGR2开始,ORACLE提供wallet这个工具,可以实现无需输入用户名与密…...

linux - 用户权限
认知root用户 无论是Windows、Macos、Linux均采用多用户的管理模式进行权限管理 在Linux系统中,拥有最大权限的账户名为: root(超级管理员) root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。普通用户的权限,一般在其HOME目录内是不…...

计蒜客T1115——字符串判等
水题不解释,考研复习压力偶尔写一道换换心情还不错~ 这里有一个比较有趣的知识点,对于同时输入多个字符串时还要允许空格的输入,那么普通的cin函数就不能满足要求了,这里采用getline函数解决,如下: string …...
Android Framework工具——EA画图
EA 是一个著名的企业架构(Enterprise Architecture)工具,用于绘制和管理企业的架构图和过程模型。该工具提供了多种功能,包括建立业务流程图、数据流图、组织结构图、应用架构图等。EA工具可帮助企业进行战略规划、业务流程改进和系统开发等活动。 一、时序图 时序图(Seq…...

使用MyEclipse如何部署Descriptor (XML)编辑器?
Descriptor (XML) Editor编辑器包含了高级的XML编辑功能,在本文中您将了解到这些编辑功能、Web XML编辑等,此功能包含在MyEclipse中可用。 MyEclipse v2023.1.2离线版下载 1. Web XML 编辑器 MyEclipse Web XML编辑器包括高级XML编辑功能,…...

Codeforces Round 889 (Div. 2)C题题解
文章目录 [Dual (Hard Version)](https://codeforces.com/contest/1855/problem/C2)问题建模问题分析1.按元素值分类讨论,正负不同时存在时2.若正负同时存在时代码 Dual (Hard Version) 问题建模 给定n个数,n不超过20,且每个数ai,…...

无涯教程-Perl - Subroutines(子例程)
定义子程序 Perl编程语言中 Subroutine子程序定义的一般形式如下: sub subroutine_name {body of the subroutine } 调用该Perl Subroutine的典型方式如下- subroutine_name( list of arguments ); 在Perl 5.0之前的版本中,调用 Subroutine的语法略有不同&…...

Rpc异步日志模块
Rpc异步日志模块作用 在一个大型分布式系统中,任何部署的分布式节点都可能发生崩溃,试想如果用普通的办法,即先排查哪个节点down掉了,找到down掉的节点后采取调试工具gdb调试该节点,进而排查宕机的原因。这中排查方法…...
python-pip
pip 路径 python 下载后自带pip ,在scripts 下,如 D:\install\python\Scripts numpy pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simplepandas D:\install\python\Scripts>pip3 install pandas -i https://pypi.tuna.tsingh…...

无涯教程-Perl - getppid函数
描述 该函数返回父进程的进程ID。 语法 以下是此函数的简单语法- getppid返回值 该函数返回父进程的进程ID。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl$ppidgetppid();print "Parent Process ID $ppid\n";执行上述代码后,将产生以下输出- Paren…...
AUTOSAR规范与ECU软件开发(基础篇)1.2 汽车电子控制系统的基本构成
目录 前言 1、 传感器 2、 电子控制单元(ECU) 3、 执行器 前言 汽车电子控制系统主要由传感器(Sensor) 、 电子控制单元(Electronic Control Unit, ECU) 和执行器(Actuator) 组成(图1.1) ,对被控对象(Controlled Object)...
一个可以通过多个条件筛选的系统界面是如何实现的(springboot+mybatis)
比如我们有一个订单记录管理界面 条件可以通过订单号、商品名称、创建日期范围、价格范围。。。来进行筛选查询。 首先我们先确定数据库订单表(我这里就不做连表了,都放在一个表中)模拟一个订单表 order表 订单号商品名称创建日期价格地址…...

WebRTC | 实现数据流的一对一通信
目录 一、浏览器对WebRTC的支持 二、MediaStream与MediaStreamTrack 三、RTCPeerConnection 1. RTCPeerConnection与本地音视频数据绑定 2. 媒体协商SDP 3. ICE (1)Candidate信息 (2)WebRTC收集Candidate (3&…...

基于MATLAB小波变换的信号突变点检测
之前在不经意间也有接触过求突变点的问题。在我看来,与其说是求突变点,不如说是我们常常玩的"找不同"。给你两幅图像,让你找出两个图像中不同的地方,我认为这其实也是找突变点在生活中的应用之一吧。回到找突变点位置上…...

JUC并发编程(JUC核心类、TimeUnit类、原子操作类、CASAQS)附带相关面试题
目录 1.JUC并发编程的核心类 2.TimeUnit(时间单元) 3.原子操作类 4.CAS 、AQS机制 1.JUC并发编程的核心类 虽然java中的多线程有效的提升了程序的效率,但是也引发了一系列可能发生的问题,比如死锁,公平性、资源管理…...

个人用C#编写的壁纸管理器 - 开源研究系列文章
今天介绍一下笔者自己用C#开发的一个小工具软件:壁纸管理器。 开发这个小工具的初衷是因为Windows操作系统提供的功能个人不满意,而且现在闲着,所以就随意写了个代码。如果对读者有借鉴参考作用就更好了,能够直接代码段复用即可。…...
iTextSharp 生成PDF
示例代码定义了一个名为PdfController的API控制器,其中的GeneratePdf方法创建了一个新的PDF文档,并将内容添加到文档中。最后,将文档内容转换为字节数组,并通过File方法返回给前端。 注意,你需要在你的项目中添加对iT…...

基于微信小程序的传染病酒店隔离平台设计与实现(Java+spring boot+MySQL+微信小程序)
获取源码或者论文请私信博主 演示视频: 基于微信小程序的传染病酒店隔离平台设计与实现(Javaspring bootMySQL微信小程序) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...