背景
4年前的老项目,底层容器是1.18的版本,与当前k8s官方主流和最新的版本相差较大,近期底层需要做1.18 -> 1.28的升级,于是平台联动升级。经过调研,目前确定的升级内容是两部分:
- go版本从1.14 -> 1.20.8
- k8s的api版本从1.18 -> 1.28.2
本篇文章主要讲go版本的升级过程以及遇到的问题,下一篇会介绍k8s api的升级过程和遇到的问题,敬请期待。
升级方案
-
下载和部署go1.20.8的环境
如下图,直接使用goland中下载对应版本的go环境即可。
-
修改项目中go mod中go版本
使用go mod tidy -v更新依赖
启动,解决启动中依赖问题
遇到的问题
-
遇到runtime报错
上边报错原因经过定位是因为原先的go mod中写死了x/sys的版本golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
删除该行,让go自己获取sys的对应包,问题得到解决
最终结果
项目的go版本顺利升级到v1.20.8,实现预期。


