在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何顺利完成Kubernetes源码编译

109次阅读
没有评论

共计 1956 个字符,预计需要花费 5 分钟才能阅读完成。

本篇文章给大家分享的是有关如何顺利完成 Kubernetes 源码编译,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

为什么要编译源码  ?

Kubernetes 是一个非常棒的容器集群管理平台。通常情况下,我们并不需要修改 K8S 代码即可直接使用。但如果,我们在环境中发现了某个问题 / 缺陷,或按照特定业务需求需要修改 K8S 代码时,如定制 Kubelet 的 StopContainer  逻辑、kube-scheduler 的 pod 调度逻辑等。为了让修改生效,那么就需要编译 K8S 代码了。

Kubernetes 源码编译,大致分为本地二进制可执行文件编译和 docker 镜像编译两种。由于在我们的环境中,Kubernetes 是由 Docker 容器方式运行的。故此我们需要采用后面一种方式编译,即镜像编译。

由于 Kubernetes 每个组件服务的镜像 Dockerfile 文件是由 Kubernetes 源码自动生成的,因此,社区并未提供每个组件的镜像 Dockerfile 文件。编译本地二进制可执行文件很简单,也更直接。而 docker 镜像编译资料却很少,且碍于某种特殊网络原因,会导致失败。此处,将介绍如何顺利的完成 K8S 镜像编译。

安装依赖  

安装 Golang

如何顺利完成 Kubernetes 源码编译

指定分支,下载 Kubernetes 源代码(默认 $GOPATH 目录为 /root/go/)

如何顺利完成 Kubernetes 源码编译

本地二进制文件编译 Kubernetes(方法一) 

修改运行平台配置参数(可选)

根据自己的运行平台(linux/amd64) 修改 hack/lib/golang.sh,把 KUBE_SERVER_PLATFORMS,KUBE_CLIENT_PLATFORMS 和 KUBE_TEST_PLATFORMS 中除 linux/amd64 以外的其他平台注释掉,以此来减少编译所用时间。

编译源码

进入 Kubernetes 根目录下

如何顺利完成 Kubernetes 源码编译

KUBE_BUILD_PLATFORMS 指定目标平台,WHAT 指定编译的组件,通过 GOFLAGS 和 GOGCFLAGS 传入编译时参数,如此处编译 kubelet  组件。

如何顺利完成 Kubernetes 源码编译

如果不指定 WHAT,则编译全部。

make all 是在本地环境中进行编译的。

make release 和 make quick-release 在容器中完成编译、打包成 docker 镜像。

编译 kubelet 这部分代码,也可执行 make clean make WHAT=cmd/kubelet

检查编译成果

编译过程较长,请耐心等待,编译后的文件在 kubernetes/_output 里。

或者进入 cmd/kubelet (以 kubelet 为例子)

执行 go build - v 命令, 如果没出错, 会生成可执行文件 kubelet

如何顺利完成 Kubernetes 源码编译

生成的可执行文件在当前文件夹下面

如何顺利完成 Kubernetes 源码编译

Docker 镜像编译 Kubernetes(方法二)

查看 kube-cross 的 TAG 版本号

如何顺利完成 Kubernetes 源码编译

查看 debian_iptables_version 版本号

如何顺利完成 Kubernetes 源码编译

这里,我使用 DockerHub 的 Auto build 功能,来构建 K8s 镜像。自然将编译需要用到的 base 镜像,放在了 DockerHub 上(也算是为促进国内 K8s 源码 docker 编译贡献绵薄之力吧!)。

如何顺利完成 Kubernetes 源码编译

把 build/lib/release.sh 中的–pull 去掉,避免构建镜像继续拉取镜像:

如何顺利完成 Kubernetes 源码编译

编辑文件 hack/lib/version.sh

将 KUBE_GIT_TREE_STATE=”dirty”  改为  KUBE_GIT_TREE_STATE=”clean”,确保版本号干净。

执行编译命令

如何顺利完成 Kubernetes 源码编译

其中 KUBE_BUILD_PLATFORMS=linux/amd64 指定目标平台为 linux/amd64,GOFLAGS=- v 开启 verbose 日志,GOGCFLAGS=”-N -l”禁止编译优化和内联,减小可执行程序大小。

编译的 K8s Docker 镜像以压缩包的形式发布在_output/release-tars 目录中

如何顺利完成 Kubernetes 源码编译

使用编译镜像

等待编译完成后,在_output/release-stage/server/linux-amd64/kubernetes/server/bin/ 目录下保存了编译生成的二进制可执行程序和 docker 镜像 tar 包。如导入 kube-apiserver.tar 镜像,并更新环境上部署的 kube-apiserver 镜像。

如何顺利完成 Kubernetes 源码编译

整个编译过程结束后,现在就可以到 master 节点上,修改 /etc/kubernetes/manifests/kube-apiserver.yaml 描述文件中的 image,修改完立即生效。

以上就是如何顺利完成 Kubernetes 源码编译,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1956字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 免费黄色一级大片 | 国内精品久久久久影院中国 | 免费无遮挡无码视频网站 | 久久久综合亚洲色一区二区三区 | 国产欧美一区二区三区在线 | 亚洲精品久久久久久 | 久久无码人妻一区二区三区午夜 | 亚洲乱码精品久久久久.. | 无码专区视频中文字幕 | 中文字幕一区二区三区四区五区人 | 国产成人a人亚洲精品无码 国产成人a视频高清在线观看 | 99r8这里精品热视频免费看 | 久久97久久97精品免视看秋霞 | 黄a视频 | 无遮挡国产高潮视频免费观看 | 国产精品一区二区综合 | 青青久久网 | 在线观看国产三级 | 18岁日韩内射颜射午夜久久成人 | 99久久婷婷国产综合精品电影 | 久久久久国产一区二区三区 | 四川少妇被弄到高潮 | 久操热线 | 日产精品久久久久久久性色 | 亚洲男人第一av网站 | 午夜激情视频在线播放 | 黑人又大又粗又长又深受不了 | 在线免费一级片 | 亚欧成人毛片一区二区三区四区 | 一级毛片日韩a欧美最爱 | 久久不见久久见免费影院视频 | 欧美性猛交一区二区三区精品 | 人人妻久久人人澡人人爽人人精品 | 日韩免费高清一级毛片久久 | 精品视频免费看 | 亚洲精品久久久久午夜福禁果tⅴ | 久久久精品成人免费看 | 国产精一品亚洲二区在线播放 | 久久婷婷色香五月综合缴缴情 | 欧美高清一级啪啪毛片 | 久久国产自偷自免费一区100 |