Home > Archives > build k8s

build k8s

Publish:

总有很多琐碎的事情,你不得不做~

言归正传,搞起~

在阅读和理解k8s的过程中,我尝试这样来做:

  1. 学习GO语言
  2. 学习cobra框架
  3. 本地编译运行k8s

编译的2中方式:

  1. 本地二进制可执行文件编译
  2. docker镜像编译两种

安装Git

1
2
yum install git
git version

安装Golang

1
2
3
4
5
wget -c https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz -P /opt/
cd /opt/
tar -C /usr/local -xzf go1.11.4.linux-amd64.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile && source /etc/profile
go version

下载 Kubernetes 源代码

1
2
3
4
mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
git clone  https://github.com/kubernetes/kubernetes -b release-1.13
cd $GOPATH/src/k8s.io/kubernetes

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

vim hack/lib/golang.sh

把KUBE_SERVER_PLATFORMS,KUBE_CLIENT_PLATFORMS和KUBE_TEST_PLATFORMS中除linux/amd64以外的其他平台注释掉,以此来减少编译所用时间。

1
2
make clean && make WHAT=cmd/kubelet
cd /src/k8s.io/kubernetes/_output

或者

1
2
cd cmd/kubelet/
go build -v

Docker镜像编译Kubernetes(方法二)

1
2
3
cd kubernetes
make clean
KUBE_BUILD_PLATFORMS=linux/amd64 KUBE_BUILD_CONFORMANCE=n KUBE_BUILD_HYPERKUBE=n make release-images GOFLAGS=-v GOGCFLAGS="-N -l"

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

参考

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: Ding Bao Guo