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

如何顺利完成Kubernetes源码编译

126次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久久久久久免费视频 | 小明成人永久免费观看视频 | 久久国产乱子伦精品免费一 | 久久久精品久久久久久96 | 最新国产精品 | 欧美伦理网 | 精品一区二区三区在线成人 | 欧美特黄特色aaa大片免费看 | 伊人四虎 | 一区二区免费 | 国产成人免费永久播放视频平台 | 秋霞在线视频 | 国产精品久久久久久久久久妇女 | 99re5精品视频在线观看 | 亚洲一区二区色 | 91一区二区三区 | 精品国产一区二区三区四区不 | 中文字幕丰满伦子无码 | 欧美日韩亚洲国内综合网俺 | 国产av无码专区亚洲av蜜芽 | 久久网国产 | 第一福利在线观看永久视频 | 成人国产精品一区二区免费看 | 9久热这里只有精品免费 | 亚洲精品一品区二品区三品区 | 亚洲2022国产成人精品无码区 | 中文成人无码精品久久久 | 亚洲成av人不卡无码影片 | 中文字幕人妻伦伦 | 成人免费的性色视频 | 亚洲av无码久久寂寞少妇 | 国产午夜高潮熟女精品av | 日韩av无码久久一区二区 | 99在线观看视频 | 亚洲av日韩精品久久久久久a | 高潮又爽又无遮挡又免费 | 亚洲成av人影院 | 麻豆映画传媒新剧免费观看 | 无码人妻丰满熟妇区五十路百度 | 亚洲色成人中文字幕网站 | 免费福利影院 |