Kubernetes源码学习

kubernetes源码剖析

1.下载和编译源码

go 1.18.3

kubernetes 1.24.2

centos 7.9

进入目录$GOPATH/src/k8s.io/kubernetes,执行以下命令即可全量构建,并且构建结果只包含linux平台的:

KUBE_BUILD_PLATFORMS=linux/amd64 make all GOFLAGS=-v GOGCFLAGS="-N -l"

在目录$GOPATH/src/k8s.io/kubernetes执行以下命令,就会构建linux平台下的kubectl文件:

KUBE_BUILD_PLATFORMS=linux/amd64 make WHAT=cmd/kubectl GOFLAGS=-v GOGCFLAGS="-N -l"

在目录$GOPATH/src/k8s.io/kubernetes/_output/bin,可以见到最新构建的kubectl文件.

2.编译和部署镜像(api-server)

go 1.18.3

kubernetes 1.24.2

centos 7.9

containerd v1.6.6

依赖镜像的下载
在编译过程中会用到以下三个镜像
k8s.gcr.io/kube-cross:v1.11.5-1
k8s.gcr.io/debian-iptables-amd64:v11.0
k8s.gcr.io/debian-base-amd64:0.4.0

打开文件build/lib/release.sh,找到下面这段内容,将其中的—pull删除,这样就不会重新去远程下载镜像了:

"${DOCKER[@]}" build --pull -q -t "${docker_image_tag}" "${docker_build_path}" >/dev/null

修改源码,本次要修改的是api-server的源码,在里面加一些日志,最后在验证环节只要能看见这些日志就说明我们修改的源码可以成功运行;
修改的文件是create.go路径如下,这个文件是创建资源的响应入口:

$GOPATH/src/k8s.io/kubernetes/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/create.go

在create.go处理请求的位置增加日志代码,如下所示,所有fmt.Println的调用都是本次新增的内容:

func createHandler(r rest.NamedCreater, scope RequestScope, admit admission.Interface, includeName bool) http.HandlerFunc {
	return func(w http.ResponseWriter, req *http.Request) {
		fmt.Println("***********************************************************************************************")
		fmt.Println("start create", req)
		fmt.Println("-----------------------------------------------------------------------------------------------")
		fmt.Printf("%s\n", debug.Stack())
		fmt.Println("***********************************************************************************************")

上述代码的作用是在api-server接收到创建资源的请求时打印日志,日志内容是http请求内容和当前方法的调用堆栈打印出来;

进入目录$GOPATH/src/k8s.io/kubernetes,执行以下命令开始构建镜像:
根据build/root/Makefile中的描述,KUBE_BUILD_CONFORMANCE参数用来控制是否创建一致性测试镜像,KUBE_BUILD_HYPERKUBE控制是否创建hyperkube镜像(各种工具集成在一起),这两个目前都用不上,因此是设置为"n"表示不构建;

k8s源码分析1-阅读源码准备工作

https://www.cnblogs.com/Dev0ps/p/16899748.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值