注:请在编译目录预留足够的空间20G即可
这里以笔记本安装centos系统为例
安装包位置 链接:https://pan.baidu.com/s/1MxPBLqwUHoWpYv1rqJOL_g 提取码:tlk1
操作系统: centos8.2
安装方式:
1,Win32DiskImager制作U盘启动盘
2,修改开机U盘启动
3,安装系统
U盘还原NTFS格式:
1,DiskGenius转换FDD格式
2,格式化U盘选择NTFS格式
注:安装完windows无法识别U盘
1,修改主机名[根据需求]
hostnamectl set-hostname develop
修改后重启
2,配置yum阿里源
echo > /etc/yum.repos.d/CentOS-Base.repo
vim /etc/yum.repos.d/CentOS-Base.repo
[aliyun-AppStream]
name=CentOS-$releasever - AppStream
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=0
enabled=1
[aliyun-BaseOS]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=0
enabled=1
[aliyun-extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.aliyun.com/centos/8.0.1905/extras/x86_64/os/
enabled=1
gpgcheck=0
3,配制生效
dnf -y install epel-release
dnf clear all
dnf makecache
dnf repolist
yum update -y
4,安装工具
yum install -y epel-release
yum install -y chrony conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget socat git
5,安装docker
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker-ce
systemctl enable docker
systemctl start docker
6,关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT
7,关闭交换内存
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
8,关闭SELinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz
默认位置/root/go
vim ~/.bashrc
添加
export GOPATH=/root/go
source ~/.bashrc
配置国内代理
go env -w GOPROXY=https://goproxy.cn,direct [windows linux都要配置]
从码云下载
mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
git clone https://gitee.com/mirrors/Kubernetes.git
查看分支
git describe --tags
v1.20.0-alpha.1-100-gd9b576d61ea
安装goland
安装FileZilla
安装go1.15.2
配置远程调试
在linux上生成编译文件
保证k8s源码 k8s.io/kubernetes/pkg/generated/openapi".GetOpenAPIDefinitions 引用
cd $GOPATH/src/k8s.io/Kubernetes
make generated_files
将生成的k8s.io\Kubernetes\pkg\generated\openapi\zz_generated.openapi.go
copy到windows下对应的代码
在windows代码目录$GOPATH\src\k8s.io\Kubernetes下执行:
go mod vendor
点击goland --> tools --> deployment --> wgl[远程调试连接名]
在linux安装cfessl
cd $GOPATH/src/k8s.io/Kubernetes
go get -u -v github.com/cloudflare/cfssl/cmd/...
ln -s $GOPATH/bin/cfssl $GOROOT/bin/cfssl
修改etcd安装脚本,下载速度太慢,手动安装,脚本需要传输到linux上相应的位置
在windows下载etcd安装包,注意版本
etcd-v3.4.13-linux-amd64.tar.gz
将安装包copy到linux
用FilezZilla 传输到 $GOPATH/src/k8s.io/Kubernetes/third_party 目录下
cd $GOPATH/src/k8s.io/Kubernetes/hack
执行 ./install-etcd.sh
配置etcd 环境变量
vim ~/.bashrc
PATH="/root/go/src/k8s.io/Kubernetes/third_party/etcd:${PATH}"
source ~/.bashrc
启动集群
在linux系统
cd $GOPATH/src/k8s.io/Kubernetes
./hack/local-up-cluster.sh
例如这里调试kube-apiserver
在D:\golang\src\k8s.io\Kubernetes\cmd\kube-apiserver\app下添加
render.go
该文件主要作用是打印指针变量
fileName1 := "/root/debug2.log"
logFile1,err := os.Create(fileName1)
defer logFile1.Close()
if err != nil {
log.Fatalln("open file error !")
}
// 创建一个日志对象
debugLog1 := log.New(logFile1,"[Debug]",log.LstdFlags)
debugLog.Println("A debug message here")
//配置一个日志格式的前缀
debugLog1.SetPrefix("[Info]")
debugLog1.Println("A Info Message here ")
//配置log的Flag参数
debugLog1.SetFlags(debugLog.Flags() | log.LstdFlags)
debugLog1.Print("-----------------k8s debug s------------------------")
output := Render(s.Authentication)
debugLog1.Print(output)
debugLog1.Print("11111111111111111111k8s debug s1111111111111111111111")
将文件copy到linux服务器
将第一次启动进程关闭
Ctrl+C
重新编译kube-apiserver
cd $GOPATH/src/k8s.io/Kubernetes
make WHAT="cmd/kube-apiserver"
重新启动集群
./hack/local-up-cluster.sh -O #这里 -O 参数避免重复编译
查看输出日志,分析结果
使用JOSN格式化工具将数据格式化 https://www.bejson.com/
copy到notepad++