云原生实践-kubernetes源码本地IDE编译调试

虽然大多数的kubernetes在生产中都是部署在linux环境下,源码编译调试也自然在linux环境下做,不过windows环境下以便捷的可视化操作闻名,特别是丰富功能的IDE对阅读理解和调试源码有很好的帮助。

下面就本机系统kubernetes源码的编译过程作一个详细的说明,另外虽然windows操作系统可能无法全部的运行kubernetes的功能,但是对kubernetes的运作机制,代码认识已经足够了。

部署go运行环境

1)下载go的sdk,可以选择国内go中文网下载(Go下载 - Go语言中文网 - Golang中文社区

2)安装

下载的文件默认安装即可。

3)配置环境变量

配置系统环境变量:

两个目录,一个表示go sdk的路径(安装路径),一个是go的工作目录(工作目录自己定义)

本地编译kubernetes源码

1.准备下载代码

通过git工具下载kubernetes代码(这里下载的是1.15版本)

代码存放于go的工作目录,这里放置在如下目录:

D:\go_workspace\src\k8s.io

2.Goland IDE导入工程

1)打开IDE

2)导入工程项目

选择打开项目“Open Project",定位到源码目录k8s.io,导入项目工程。

3)配置环境

导入代码工程后,代码结构如下:

由于工程需要下载依赖的代码包,国内直接连接谷歌相关东西下载比较慢,这里可以配置相应的代理。

3.操作依赖包

自动下载相应的代码依赖包之后,需要将部分依赖包进行拷贝,从staging目录拷贝到对应的vendor目录中。

拷贝至对应的vendor目录下面(首先将其该部分模块在该目录下的文件删除掉,然后拷贝):

4.模块编译验证

挑选一个统一入口模块kube-apiserver

1)配置模块运行启动

配置本地的go运行sdk:

配置运行启动:

启动参数配置:

启动参数主要是启动程序的程序名,指定启动的入口文件,这里先不配置启动以来的参数。

启动运行,等待模块运行情况:

初始运行apiserver模块出错,该错误是因为缺少apiserver的开放接口描述文件导致的,这时候需要linux环境上编译生成该文件(另外一篇介绍linux环境编译kubernetes,这里先拷贝过来)

5.出错问题解决方案

1)初次编译运行出错(依赖openapi描述文件)

登录linux环境:

执行make命令,编译时间稍长,等待编译结束后:_output下生成编译结果

进入代码的pkg区域:找到make生成的代码描述文件

将该代码文件拷贝至本地goland工程:

2)再次运行

因为apiserver的启动运行,需要依赖etcd作为相应的分布式数据一致性的存储,这里需要配置对应的etcd的服务。

etcd的windows环境部署

1)找到etcd的下载包地址:

Releases · etcd-io/etcd · GitHub

2)选择windows环境的包下载

部署安装:

  • 解压etcd包

安装部署在指定的目录,这里解压在go的工作目录。

  • etcd介绍

etcd是一个分布式一致的kv存储,主要用于分布式系统共享配置和服务发现。

etcd.exe为服务端,etcdctl.exe为客户端,提供操作控制的命令入口。

  • 安装etcd

点击运行服务端应用:

运行之后的etcd服务端会自动打开2379的服务端口,配置本地地址可以访问。

配置etcd服务运行apiserver

配置相应的etcd地址后,开始编译运行:

运行模块成功,可以设置断点等调试理解源码了!

注意:

在linux环境下make编译生成的“zz_generated.openapi.go”文件,需要在+k8s:openapi-gen=true模式下编译出来。

编译linux环境的kubernetes的时候修改编译文件“Makefile.generated_files”:

+k8s:openapi-gen=true //将其注释去除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值