主要观点:SimKube 到 2.0 版本,经历了一个尴尬的调试过程来解决一个与 Kubernetes 相关的 bug。
关键信息:
- SimKube 分为
sk-tracer
和sk-driver
组件,用户报告部分事件未在模拟环境中重现,经过一系列调试步骤仍未解决。 - 最终发现问题出在
sk-tracer
中,是由于对不同 Kubernetes 资源类型的处理逻辑导致部分对象被误删除。 - Rust 的调试环境不佳,如调试器对 Rust 特性理解有限,导致调试困难。
- 解决办法是让
sk-tracer
除了跟踪对象名称,还跟踪对象类型(GVK),并借此机会改进了跟踪文件格式的可扩展性。
重要细节: - 调试过程中,从用户集群获取日志,设置 Zoom 会议观察,在不同环境中尝试重现问题等。
- 代码中通过不同的事件类型(Applied、Deleted、Restarted)来处理对象的创建、删除和重启,由于事件本身不带时间戳,导致处理逻辑出现问题。
- 对调试环境的吐槽,如使用 Rust 调试器时对
Option
等特性处理困难。 - 提到 SimKube 不依赖特定云提供商,以及更新
kube-rs
版本带来的代码重写工作。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。