k8s从1.21不再使用bazel的解读

Kubernetes(k8s)从1.21版本开始不再使用Bazel作为构建工具。这一改变源于go工具链的改进和维护双构建系统的复杂性。移除Bazel的主要原因是Go的编译速度提升、社区成员的学习成本高、维护负担重以及Bazel在某些平台上的兼容性问题。尽管Bazel提供了多语言一致性、测试效率和特定功能的优势,但最终决定移除以简化维护和提高社区参与度。
摘要由CSDN通过智能技术生成

0x01 背景

之前有关注bazel相关的技术动态,自己也做了一些研究。最新看k8s源码时,突然发现没有了bazel相关的配置,猜测是把bazel移除了,去github上搜索了下。确认确实是移除了。

最初的提案链接为:https://github.com/kubernetes/kubernetes/issues/88553,感兴趣的可以直接去看,讨论很热烈。

主要是想看下顶级项目面对这种取舍(trade-off)问题时是如何决策的。

0x02 移除的理由

提案作者的理由:

  1. go tool chain本身支持缓存了,原来引入bazel提升编译速度的诉求不存在了。
  2. 维护两套构建系统太繁琐了。如升级Go需要改go.mod和Bazel的配置文件。

主要同意移除的理由:

  1. 学习Bazel的成本太高,随着k8s社区规模越来越大,这个成本也越来越高。新加入门槛过高。
  2. 维护Bazel负担太重,少数专家熟悉,占用了这些专家的太多时间。
  3. Bazel不能在各平台下顺利运行。
  4. Bazel对ARM平台支持不好,没有包含默认的ARM下的二进制包(vielmetti)。
  5. Bazel让漏洞修复过程常复杂(liggitt)。
  6. Bazel本身的Bug会影响到k8s。
  7. 测试时,使用Bazel资源消耗较多16GB,不使用它时6-8GB就可以满足。
  8. Bazel引入时Go的存在的问题已经
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值