Kubernetes 控制平面中对象级联变更的分布式追踪
系统与控制
2024-11-05 v1 性能
系统与控制
摘要
Kubernetes 是一个采用声明式配置管理方法的容器编排系统。在 Kubernetes 中,每个期望状态和实际状态都由一个"对象"表示,多个控制器自主监控相关对象并在控制平面中将其对象更新至期望状态。由于这种设计,对一个对象的变更会链式传播到其他对象。集群操作员需要了解这些级联变更完成所需的时间,因为它直接影响集群上运行的应用程序的服务质量。然而,目前没有实用的方法来观察这种级联变更,包括每次变更所耗时的分解。分布式追踪技术常用于微服务架构中以监控应用性能,但它们不直接适用于 Kubernetes 的控制平面;微服务架构依赖对其他服务的显式 API 调用,而 Kubernetes 中的控制器仅监控对象以了解何时开始处理,且从不直接调用其他控制器的函数。在本文中,我们提出了一种自动追踪控制平面中对象变更的系统。我们的方法在对象的元数据中添加一个标识符——变更传播标识符(CPID),观测到对象变更的控制器将其 CPID 传播至该控制器所更新的对象。当多个变更需要在对象上合并时,会生成新的 CPID,原始 CPID 与新 CPID 之间的关系被发送至外部追踪服务器。我们确认了变更传播的可视化以及所需时间的可测量性。我们还表明该系统的开销并不显著。
引用
@article{arxiv.2411.01336,
title = {Distributed Tracing for Cascading Changes of Objects in the Kubernetes Control Plane},
author = {Tomoyuki Ehira and Daisuke Kotani and Yasuo Okabe},
journal= {arXiv preprint arXiv:2411.01336},
year = {2024}
}