总有很多琐碎的事情,你不得不做~
言归正传,搞起~
在阅读和理解k8s的过程中,我尝试这样来做:
- 学习GO语言
- 学习cobra框架
- 本地编译运行k8s
编译的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”禁止编译优化和内联,减小可执行程序大小。