Kmesh v1.1.0 版本已正式发布。
在 v1.0.0 的基础上,此版本对 Kmesh 的架构、可观察性和生态系统集成进行了重大改进。Kmesh 官方网站经过了全面的重新设计,提供了直观的界面和精简的文档,以增强用户和开发者的体验。此外,我们还重构了 DNS 模块并添加了长连接指标,从而能够更深入地洞察更多流量模式。
在 Kernel-Native 模式下,我们减少了对内核的侵入式修改。另外,我们使用全局变量替换 BPF 配置映射,以简化底层复杂性。与 Istio 1.25 的兼容性也经过了严格的验证,确保与该版本的 Istio 实现无缝互操作。值得注意的是,长期以来一直存在的 TestKmeshRestart E2E 测试用例不稳定问题,通过对底层 BPF 程序的长期调查和重构,已得到解决,标志着运行时可靠性的飞跃。
Kmesh v1.1.0 版本主要特性
网站全新改版
Kmesh 官方网站经过了彻底的重新设计,提供了更直观的用户体验,改进了文档,重新组织了内容层次结构,并简化了导航。在处理上一次迭代中的反馈时,我们专注于可以提升用户体验的关键领域。之前的界面存在一些可用性问题,偶尔会导致查找比较困难。我们的博客模块尤其需要关注,因为它的内容组织和视觉层次结构已经影响了内容的可发现性和可读性。从工程角度来看,我们认识到可以通过更好的组件组织和更系统的样式方法来改进代码结构,因为现有的实现随着时间的推移已经变得越来越复杂,难以维护。
为了解决这些问题,我们转向了 React 和 Docusaurus,这是一个对开发人员更加友好的现代文档框架。这使我们能够创建模块化组件,并通过可重用性消除冗余代码。 Docusaurus 提供专为文档和博客设计的内置导航系统,以及版本控制的文档功能。我们实现了文档的多语言支持,添加了高级搜索功能,并彻底重构了内容结构。这些举措显著提升了用户体验,使 Kmesh 网站对所有用户来说都更易于访问,也更具价值。
![]()
长连接指标
在此版本之前,Kmesh 仅在 TCP 连接终止和建立期间提供访问日志,其中包含有关连接的详细信息,例如发送和接收的字节数、数据包丢失、RTT 和重传次数。Kmesh 还提供特定于工作负载和服务的指标,例如发送和接收的字节数、丢失的数据包、最小 RTT 以及 Pod 打开和关闭的总连接数。这些指标仅在连接关闭后更新。
在此版本中,我们实现了 TCP 长连接的访问日志和指标,并开发了一种持续的监控和报告机制,可在长连接整个生命周期内捕获详细的实时数据。访问日志会定期报告,其中包含报告时间、连接建立时间、发送字节数、接收字节数、丢包率、RTT、重传次数和状态等信息。长连接还会定期报告发送字节数、接收字节数、丢包率和重传次数等指标。
DNS 重构
当前的 DNS 进程包含 CDS 刷新进程。因此,DNS 与内核原生模式深度耦合,无法在双引擎模式下使用。
![]()
在 1.1 版本中,我们重构了 Kmesh 的 DNS 模块。DNS 中循环遍历刷新队列的数据不再是一个包含 CDS 的结构,而是变成了一个域名,因此 DNS 模块不再关心 Kmesh 模式,只提供待解析的主机名。
![]()
BPF 配置映射优化
Kmesh 已删除专用的 kmesh_config_map BPF map,该map之前存储了全局运行时配置,例如 BPF 日志记录级别和监控开关。现在,这些设置通过全局变量进行管理。利用全局变量可以简化 BPF 配置管理,从而提高运行时效率和可维护性。
优化内核原生模式,减少对内核的侵入式修改
内核原生模式需要大量侵入式内核重构才能实现基于 HTTP 的流量控制。其中一些修改可能会对内核产生重大影响,这使得内核原生模式难以在实际产品中部署和使用。
为了解决这个问题,我们同步修改了内核原生模式下的内核以及相关的 ko 和 eBPF。通过本次版本的优化,在内核 5.10 中,内核修改限制为四个,在内核 6.6 中,内核修改减少为只有一个。最后一个修改将尽可能地被消除,最终目标是在原生版本 6.6 及以上版本上运行内核原生模式。
![]()
Istio 1.25 兼容性验证
Kmesh 已验证与 Istio 1.25 的兼容性,并在 CI 中添加了相应的端到端测试。Kmesh 社区负责在 CI 中对三个 Istio 版本进行验证,因此 Istio 1.22 的端到端测试已从 CI 中移除。
关键 Bug 修复
1. kmeshctl 安装waypoint错误:
https://github.com/kmesh-net/kmesh/issues/1287
2. TestKmeshRestart flaky问题:
https://github.com/kmesh-net/kmesh/issues/1192
Kmesh v1.1.0 发布说明:https://github.com/kmesh-net/kmesh/releases/tag/v1.1.0