Kubernetes 源码剖析-环境准备

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,易编译不通过

(一)Kubernetes 源码剖析-环境准备_golang_02

1.2.2.2虚拟机上外网

修改配置,虚拟机可上外网

#找到 ONBOOT=NO 改成 ONBOOT=yes
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#重启网络: 
service network restart 

(一)Kubernetes 源码剖析-环境准备_git_03

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)

(一)Kubernetes 源码剖析-环境准备_其他_04

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

(一)Kubernetes 源码剖析-环境准备_golang_05

*** 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

(一)Kubernetes 源码剖析-环境准备_docker_06

(一)Kubernetes 源码剖析-环境准备_其他_07

#清理构建环境
make clean