导致 SimKube 2.0 的错误

主要观点:SimKube 到 2.0 版本,经历了一个尴尬的调试过程来解决一个与 Kubernetes 相关的 bug。
关键信息:

  • SimKube 分为sk-tracersk-driver组件,用户报告部分事件未在模拟环境中重现,经过一系列调试步骤仍未解决。
  • 最终发现问题出在sk-tracer中,是由于对不同 Kubernetes 资源类型的处理逻辑导致部分对象被误删除。
  • Rust 的调试环境不佳,如调试器对 Rust 特性理解有限,导致调试困难。
  • 解决办法是让sk-tracer除了跟踪对象名称,还跟踪对象类型(GVK),并借此机会改进了跟踪文件格式的可扩展性。
    重要细节:
  • 调试过程中,从用户集群获取日志,设置 Zoom 会议观察,在不同环境中尝试重现问题等。
  • 代码中通过不同的事件类型(Applied、Deleted、Restarted)来处理对象的创建、删除和重启,由于事件本身不带时间戳,导致处理逻辑出现问题。
  • 对调试环境的吐槽,如使用 Rust 调试器时对Option等特性处理困难。
  • 提到 SimKube 不依赖特定云提供商,以及更新kube-rs版本带来的代码重写工作。
阅读 6
0 条评论