编译k8s可执行文件
Compiling Kubernetes Binaries编译kubernetes之前需要有完备的Go环境。这篇文章将通过几种方式来编译LInux二进制文件和交叉编译Windows二进制文件:安装Go临时安装Go环境:# cd ~# wget https://redirector.gvt1.com/edgedl/go/go1.9.2.linux- amd64.tar.gz...
Compiling Kubernetes Binaries
编译kubernetes之前需要有完备的Go环境。这篇文章将通过几种方式来编译LInux二进制文件和交叉编译Windows二进制文件:
安装Go
但要保证Golang版本与Kubernetes版本保持对应,可参考如下:
[https://github.com/kubernetes/community/blob/master/contributors/devel/development.md]
Kubernetes requires Go
1.0 - 1.2 1.4.2
1.3, 1.4 1.6
1.5, 1.6 1.7 - 1.7.5
1.7 1.8.1
1.8 1.8.3
1.9 1.9.1
1.10 1.9.1
1.11+ 1.10.2
临时安装Go环境:
# cd ~
# wget https://redirector.gvt1.com/edgedl/go/go1.9.2.linux- amd64.tar.gz -O go1.9.2.tar.gz
# tar -vxzf go1.9.2.tar.gz
# mkdir gopath
# export GOROOT="$HOME/go"
# export GOPATH="$HOME/gopath"
# export PATH="$GOROOT/bin:$PATH"
注:若要设置永久生效,就需要在~/.profile中添加export后的内容。
为了验证,go安装是否成功,可通过以下命令检查:
# go version
...
# go env
...
编译kubernetes二进制
有几种不同的选择编译kubernetes二进制文件:
- 本地编译
- 用Vagrant产生二进制
- 利用kuberbetes中标准容器构建脚本,按照如下操作步骤构建本地二进制文件:
本地构建
首先从仓库中获取kubernetes源码,命令如下:
# KUBEREPO="k8s.io/kubernetes"
# go get -d $KUBEREPO
# cd $GOPATH/src/$KUBEREPO
checkout分支然后构建Linux版本的kubelet二进制。这里我们使用v1.9.1版本,git checkout, 你可以应用PRs,patchs,或者修改后构建自己的二进制文件。
# git checkout tags/v1.9.1
# make clean && make WHAT=cmd/kubelet
最后,构建重要的Windows版本二进制文件,最后一步需要根据不同情况而定:
# KUBE_BUILD_PLATFORMS=windows/amd64 make WHAT=cmd/kubectl
# KUBE_BUILD_PLATFORMS=windows/amd64 make WHAT=cmd/kubelet
# KUBE_BUILD_PLATFORMS=windows/amd64 make WHAT=cmd/kube-proxy
# cp _output/local/bin/windows/amd64/kube*.exe ~/kube-win/
该步骤跟编译Linux版本的可执行文件事相同的。Linux中只需要去掉KUBE_BUILD_PLATFORMS=windows/amd64前缀,输出目录中将会变成_output/…/linux/amd64。
利用Vagrant构建
There is a Vagrant setup available here. Use it to prepare a Vagrant VM, then execute these commands inside it:
DIST_DIR="${HOME}/kube/"
SRC_DIR="${HOME}/src/k8s-main/"
mkdir ${DIST_DIR}
mkdir -p "${SRC_DIR}"
git clone https://github.com/kubernetes/kubernetes.git ${SRC_DIR}
cd ${SRC_DIR}
git checkout tags/v1.9.1
KUBE_BUILD_PLATFORMS=linux/amd64 build/run.sh make WHAT=cmd/kubelet
KUBE_BUILD_PLATFORMS=windows/amd64 build/run.sh make WHAT=cmd/kubelet
KUBE_BUILD_PLATFORMS=windows/amd64 build/run.sh make WHAT=cmd/kube-proxy
cp _output/dockerized/bin/windows/amd64/kube*.exe ${DIST_DIR}
ls ${DIST_DIR}
引用
更多推荐
所有评论(0)