文章插图
突破时长限制如上所述,追踪不能无限增长,因为它可能会导致某些存储后端出现问题 。相反,我们每 30 分钟开始一个新的追踪 。这会导致用户体验混乱,因为在 12:28 开始滚动的部署追踪会在 12:30 突然终止,用户必须在 12:30 手动跳转到下一个追踪才能继续查看追踪 . 为了避免这种认知开销,Kelemetry 存储插件在搜索追踪时识别具有相同对象标签的跨度,并将它们与相同的缓存 ID 以及用户指定的搜索时间范围一起存储 。在渲染 span 时,所有相关的轨迹都合并在一起,具有相同对象标签的对象 span 被删除重复,它们的子对象被合并 。轨迹搜索时间范围成为轨迹的剪切范围,将对象组的完整故事显示为单个轨迹 。
多集群支持可以部署 Kelemetry 来监视来自多个集群的事件 。在字节跳动,Kelemetry 每天创建 80 亿个跨度(不包括伪跨度)(使用多 raft 缓存后端而不是 etcd) 。对象可以链接到来自不同集群的父对象,以启用对跨集群组件的追踪 。
未来增强采用自定义追踪源为了真正连接K8S生态系统中的所有观测点,审计和事件并不足够全面 。Kelemetry将从现有组件收集追踪,并将其集成到Kelemetry追踪系统中,以提供对整个系统的统一和专业化视图 。
批量分析通过Kelemetry的聚合追踪,回答诸如“从部署升级到首次拉取镜像的进展需要多长时间”等问题变得更加容易,但我们仍然缺乏在大规模上聚合这些指标以提供整体性能洞察的能力 。通过每隔半小时分析Kelemetry的追踪输出,我们可以识别一系列跨度中的模式,并将其关联为不同的场景 。
使用案例1. replicaset controller 異常用户报告,一个 deployment 不断创建新的 Pod 。我们可以通过deployment名称快速查找其 Kelemetry 追踪,分析replicaset与其创建的 Pod 之间的关系 。
文章插图
从追踪可见,几个关键点:
- Replicaset-controller 发出
SuccessfulCreate
事件,表示 Pod 创建请求成功返回,并在replicaset reconcile中得到了replicaset controller的确认 。 - 没有replicaset状态更新事件,这意味着replicaset controller中的 Pod reconcile未能更新replicaset状态或未观察到这些 Pod 。
文章插图
- Replicaset controller 在 Pod 创建后再也没有与该 Pod 进行交互,甚至没有失败的更新请求 。
2.浮动的 minReadySeconds用户发现deployment的滚动更新非常缓慢,从14:00到18:00花费了几个小时 。如不使用Kelemetry,通过使用 kubectl 查找对象,发现 minReadySeconds 字段设置为 10,所以长时间的滚动更新时间是不符合预期的 。kube-controller-manager 的日志显示,在一个小时后 Pod 才变为 Ready 状态
文章插图
进一步查看 kube-controller-manager 的日志后发现,在某个时刻 minReadySeconds 的值为 3600 。
文章插图
使用 Kelemetry 进行调试,我们可以直接通过deployment名称查找追踪,并发现federation组件增加了 minReadySeconds 的值 。
文章插图
后来,deployment controller将该值恢复为 10 。
文章插图
因此,我们可以得出结论,问题是由用户在滚动更新过程中临时注入的较大 minReadySeconds 值引起的 。通过检视对象 diff,可以轻松识别由非预期中间状态引起的问题 。
尝试KelemetryKelemetry已在Github上开源:https://github.com/kubewharf/kelemetry
按照 docs/QUICK_START.md 快速入门指南试试Kelemetry如何与您的组件进行交互,或者如果您不想设置一个集群,可以查看从GitHub CI流水线构建的在线预览:https://kubewharf.io/kelemetry/trace-deployment/
加入我们火山引擎云原生团队火山引擎云原生团队主要负责火山引擎公有云及私有化场景中 PaaS 类产品体系的构建,结合字节跳动多年的云原生技术栈经验和最佳实践沉淀,帮助企业加速数字化转型和创新 。产品包括容器服务、镜像仓库、分布式云原生平台、函数服务、服务网格、持续交付、可观测服务等 。
推荐阅读
- MetaGPT AI 模型开源:可模拟软件公司开发过程,生成高质量代码
- 国家网信办发布深度合成服务算法备案清单:百度阿里腾讯字节等在列
- Meta 开源 AI 语言模型 MusicGen,可将文本和旋律转化为完整乐曲
- 教师|年入2000万的猎头,正在逃离字节
- ChatGPT路线图曝光:没有GPT-5、识图功能要等到明年、GPT-3或将开源
- Huggingface榜首开源模型惹争议:魔改Apache协议,达到一定门槛要收钱
- 为什么不用Go开发操作系统?
- 谷歌开源 Rust Crate 审查结果:便于 Rust 开发者验证源码安全
- 谷歌开源云端病理学 Python 资料库,加速医疗 AI 场景研发
- 字节跳动开源ByConity:基于ClickHouse的存算分离架构云原生数仓