1. 环境
系统:CentOS 7.2
Go:1.10.3
Kubernetes:1.10.4
2. 安装最新版go
编译的Kubernetes 1.10.4要求go版本在1.9.3以上,使用下面的yum源安装最新版go:
[golang]
name=Golang
baseurl=https://mirror.go-repo.io/centos/7/x86_64/
enable=1
gpgcheck=0
# yum install golang
3. 下载Kubernetes源码到$GOPATH目录
# go get -d k8s.io/kubernetes
如果访问k8s.io有问题,可以从github下载,然后复制到$GOPATH/src/k8s.io/目录。
4. 编译
进入kubernetes目录,切换到要编译的版本,然后编译:
# cd $GOPATH/src/k8s.io/kubernetes
# git checkout tags/v1.10.4
# make clean
# make WHAT=cmd/kubelet
WHAT指定只编译kubelet,减少编译时间。编译完成后会在_output/bin/目录下生成kubelet二进制文件。
5. 更新
将编译生成的二进制文件复制到安装目录,重启服务就完成更新了:
# cp $GOPATH/src/k8s.io/kubernetes/_output/bin/kubelet /usr/local/bin/kubelet
# systemctl restart kubelet
如果kubelet是运行在容器中,则需要打包成镜像,参考
Building Kubernetes。
参考资料
编译 Kubernetes 二进制文件