Kubernetes源码编译(k8s主机编译)(go1.15.7+kubernetes-1.20.2)

(go1.15.7+kubernetes-1.20.2)

Kubernetes支持主机编译和容器编译,主机编译需要安装基本环境(go、gcc),容器编译使用Docker的Dockerfile编译,也是比较流行的方式。编译对内存有一定的要求,建议机器内存至少在2G以上。

环境准备(主机编译)

Kubernetes编译依赖Go环境和gcc,所以编译之前需要先下载好基本环境

gcc安装

Centos7下gcc可以直接使用yum安装(默认已安装,更新)
# yum -y install gcc

Golang源码获取

go语言中文网(里面下载最新稳定版go1.15.7.linux-amd64.tar.gz)

https://studygolang.com/dl
Kubernetes源码编译(k8s主机编译)(go1.15.7+kubernetes-1.20.2)_第1张图片

k8s源码获取

https://github.com/kubernetes/kubernetes

https://github.com/kubernetes/kubernetes/releases
Kubernetes源码编译(k8s主机编译)(go1.15.7+kubernetes-1.20.2)_第2张图片

主机编译

主机编译可以直接使用kubernetes自带的Makefile,使用make即可编译。但是由于编译生成的二进制较多,一般情况下对不同的模块可以进行单独的编译,以kubelet为例:

1、使用 make all WHAT=cmd/kubelet GOFLAGS=-v命令编译 kubelet模块

2、编译生成的二进制包在 _output/bin目录下

3、如果想要知道编译使用的脚本,可以通过查看 Makefile文件代码,查看编译执行脚本

# tar xf go1.15.7.linux-amd64.tar.gz -C /usr/local/

# echo "PATH=/usr/local/go/bin:$PATH" >> /etc/profile

# source /etc/profile

# go version
go version go1.15.7 linux/amd64
# mkdir -p /usr/local/go/bin/src/k8s.io
# cd /usr/local/go/bin/src/k8s.io
# tar xf kubernetes-1.20.2.tar.gz
# cd kubernetes-1.20.2/
# make all WHAT=cmd/kubelet GOFLAGS=-v (整个过程大概2分30秒)
# cd _output/bin
# ./kubelet --version
Kubernetes v1.20.2

步骤截图
Kubernetes源码编译(k8s主机编译)(go1.15.7+kubernetes-1.20.2)_第3张图片
Kubernetes源码编译(k8s主机编译)(go1.15.7+kubernetes-1.20.2)_第4张图片
Kubernetes源码编译(k8s主机编译)(go1.15.7+kubernetes-1.20.2)_第5张图片
Kubernetes源码编译(k8s主机编译)(go1.15.7+kubernetes-1.20.2)_第6张图片

你可能感兴趣的:(k8s,linux,centos,运维,kubernetes)