1.环境准备
我比较喜欢干净的mac环境,所以在这里,需要重新申请一台干净的CentOS-7-x86_64-Everything-1908环境,纯清系统,所以需要用到的软件一一安装。
1.1 VMware Fusion 11.5.3 GA
1.2 Linux镜像下载
1.2.1下载地址
CentOS-7-x86_64-Everything-1908镜像下载阿里云站点下载| centos官方下载
1.2.2个性化配置
1.2.2.1配置信息
配置信息2C8G,官方提到如果内存小于8G,易编译不通过
1.2.2.2虚拟机上外网
修改配置,虚拟机可上外网
#找到 ONBOOT=NO 改成 ONBOOT=yes
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#重启网络:
service network restart
1.2.2.3安装net-tools package
sudo yum install net-tools
通过ifconfig查看ip地址然后 ssh连接虚拟机进行操作(个人喜好)
1.2.2.4修改hostname,主机名
hostnamectl set-hostname Building-Kubernetes
1.2.2.5安装wget&docker&Git
yum install wget
#更改配置镜像源ali
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#可以查看下docker-ce.repo这里的镜像地址全变成阿里的了。
yum install docker-ce -y
yum install -y git
1.2.2.6将Docker加入开机启动项
systemctl start docker && systemctl enable docker
1.2.2.7 安装用于以树状图列出目录的内容 tree
yum install tree
1.3安装gvm,多个golang环境版本切换
安装gvm全称为「Golang Version Manager」golang环境版本切换
wget https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer
#把github地址修改为gitee地址:
SRC_REPO=${SRC_REPO:-https://gitee.com/hongleishen/gvm.git}
把GVM_DEST改/opt/shl目录:
#GVM_DEST="/opt/shl"
#安装完终端会提示(按提示输入)
[root@building-kubernetes shl]# sh gvm-installer
Cloning from https://gitee.com/hongleishen/gvm.git to /opt/shl/gvm
which: no go in (/sbin:/bin:/usr/sbin:/usr/bin)
No existing Go versions detected
Installed GVM v1.0.22
Please restart your terminal session or to get started right away run
`source /opt/shl/gvm/scripts/gvm`
#go 版本切换工具gvm环境变量配置
vi /etc/profile
[[ -s "/opt/shl/gvm/scripts/gvm" ]] && source "/opt/shl/gvm/scripts/gvm"
source /etc/profile
[root@building-kubernetes shl]# gvm list
gvm gos (installed)
2.安装go不同版本
使用gvm 安装golang版本
注意:在<<Kubernetes源码剖析>>一书中提到,构建kubernetes 1.14版本,需要使用Go1.12或者更高版本。不同的Kubernetes版本对应的Go语言版本也不同
gvm install go1.14
#小提示,若安装不成功或者慢的话,同理修改git地址为gitee地址
vi ~/.gvm/scripts/install
修改 GO_SOURCE_URL 变量地址为: GO_SOURCE_URL=https://gitee.com/hongleishen/go.git
#高版本编译需要用到1.4版本,所以先编译1.4或者先安装1.4
git checkout release-branch.go1.4
cd go/src
./all.bash
#go环境变量配置
export GOROOT_BOOTSTRAP=/opt/shl/gvm/gos/go1.4
#$GOROOT是go的安装目录,配置后不会再更改(go的sdk目录)
export GOROOT=/opt/shl/gvm/gos/go1.4
#GOPATH:开发者自定义的项目的根目录;所有的go项目都要放置到这个目录之下
export GOPATH=/opt/shl/mygo
export GOBIN=${GOPATH}/bin
export PATH=${PATH}:${GOBIN}:${GOROOT}/bin
## 其它安装不再赘述环境这里提一下
export MAVEN_HOME=/opt/shl/apache-maven-3.5.3
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
3.Kubernetes的构建
3.1构建形式
-
本地环境构建 make\make all
-
容器环境构建 make release\make quick-release
-
Bazel环境构建 make bazel-build
mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
#构建kubernetes 1.14版本
git checkout -b release-1.14 remotes/origin/release-1.14
cd kubernetes
cloc $GOPATH/src/k8s.io/kubernetes
*** cloc统计显示kubernetes 1.14拥有370万行代码,其中Go语言代码占304万行。***
3.4 本地环境构建
cd $GOPATH/src/k8s.io
#构建kubernetes 1.14版本
git checkout -b release-1.14 remotes/origin/release-1.14
cd kubernetes
#编译所有Kubernetes组件
make or make all
# 列出所有二进制文件
ls -lh ./_output/bin
#指定组件编译,如kubectl组件
make WHAT=cmd/kubectl
# 列出二进制文件
ls -lh ./_output/bin
build/root/Makefile
#清理构建环境
make clean