WSL 做 kube-ovn 开发环境

272 阅读2分钟

背景

之前我的开发环境是部署在本机的 VMware 虚拟机上的,但随着开发需求的增长,我逐渐发现内存已经不够用了。同时,VMware 的硬盘管理也让我感到麻烦——它不会自动缩容,因此需要定期使用 VMware 的工具手动清理硬盘空间。

在尝试其他方案时,我发现 WSL(Windows Subsystem for Linux)具有以下几个优点:

  1. 更加轻量。
  2. 与 VSCode 的兼容性较好,能够方便地进行开发。

因此,我决定将开发环境逐步迁移到 WSL 上。

另外,在使用过程中我发现 WSL 在内核调试方面也有很大优势。下面我将分享在 WSL 调试和部署 Kube-OVN 过程中的一些经验与坑点。


编译 WSL 内核

WSL 自带的内核默认没有开启很多功能,因此需要自定义编译一个内核。以下是编译内核的基本步骤:

参考文章

注意点

  1. 手动指定内核路径

    • 在 Windows 11 上,.wslconfig 文件中的 kernel 路径需要手动指定,否则默认路径不会生效。
  2. 需要开启的内核功能

    • 确保开启 Open vSwitch(openvswitch)。

image.png

  • 在 Netfilter 下开启所有相关功能。

image.png

  1. 编译过程中的内存问题
    • 编译过程中可能会遇到 load BTF from vmlinux: No such file or directory 错误。
    • 该问题的原因是内存不足,而不是缺少 BPF 相关依赖。
    • 解决方法:
      • 关闭所有占用内存的进程。
      • 确保有足够的可用内存后再次编译。

部署 Kube-OVN

遇到的坑点及解决方法

  1. Kube-OVN-CNI 无法访问 API Server

    • 问题原因:dummy 设备无法创建。
    • 解决方法:手动执行 modprobe dummy
  2. BuildKit 错误

    • 错误信息:BuildKit is enabled but the buildx component is missing or broken.
    • 解决方法:安装 BuildKit:
      sudo apt install docker-buildx
      
  3. 最终构建和安装命令

    • 确保以下命令可以顺利执行:
      make kind-init
      make kind-install
      make build-kube-ovn
      

总结

通过将开发环境迁移到 WSL,我不仅解决了虚拟机内存不足的问题,还发现了 WSL 在内核调试方面的潜力。在部署 Kube-OVN 的过程中,也踩到了一些坑,但最终成功完成了整个过程。这些经验希望对你有所帮助!之后再分享在wsl 怎么debug ebpf,cilium。