k8s源码编译调试

最近赋闲在家等考科三,闲来无事想着本地编译下k8s玩玩(毕竟云原生时代最重要的一个平台)。

  • 环境:m1使用multipass创建的一个ubuntu虚拟机
  • 代码版本:v1.24.0

需要的工具包

1
2
3
4
5
6
7
8
sudo apt install build-essential
sudo apt install -y gcc g++ gawk autoconf automake python3-cmarkgfm
sudo apt install -y acl libacl1-dev
sudo apt install -y attr libattr1-dev
sudo apt install -y libxxhash-dev
sudo apt install -y libzstd-dev
sudo apt install -y liblz4-dev
sudo apt install -y libssl-dev

第三方包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#jq
sudo apt-get install jq

#pyyaml
sudo apt install python3-pip
pip install pyyaml

#rsync
cd ~/Downloads
wget https://github.com/WayneD/rsync/archive/refs/tags/v3.2.4.tar.gz
tar -xf v3.2.4.tar.gz
cd rsync-3.2.4

./configure
make
sudo cp ./rsync /usr/local/bin/
sudo cp ./rsync-ssl /usr/local/bin/

etcd

1
2
3
4
5
6
7
8
9
ETCD_VER=v3.5.4  
curl -L https://storage.googleapis.com/etcd/${ETCD_VER}/etcd-${ETCD_VER}-linux-arm64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-arm64.tar.gz
mkdir ~/etcd
tar xzvf /tmp/etcd-${ETCD_VER}-linux-arm64.tar.gz -C ~/etcd --strip-components=1
rm -f /tmp/etcd-${ETCD_VER}-linux-arm64.tar.gz

sudo vim ~/.bashrc
添加 export PATH="/home/ubuntu/etcd:${PATH}"
source ~/.bashrc

安装docker及golang(golang 1.18)

代码下载

1
2
3
### 用的码云,速度快亿点
git clone https://gitee.com/mirrors/kubernetes.git
git checkout -b kube1.24 v1.24.0

启动单机版

1
2
#进入源码目录编译并启动k8s
sudo ./hack/local-up-cluster.sh

调试

1
2
export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig
cluster/kubectl.sh

看到下面这个说明编译成功

新开控制台使用k8s.使用k8s命令前记得执行这个命令: export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig (或是把这个加入环境变量)

部署nginx

外网访问自己刚启动的nginx,命令:cluster/kubectl.sh port-forward nginx 8080:80 –address 0.0.0.0

成功的!可以愉快的玩耍自己编译出来的k8s