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}

引用

[1](‘https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/kubernetes/compiling-kubernetes-binaries#build-locally‘)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐