etcd源码编译与调试

背景

K8S元数据存储在etcd中,所以etcd是非常重要的一环,之前有过几次etcd出现故障导致集群不可用,所以打算重头学下etcd。

编译

我的环境是WSL2上的Ubuntu,整体编译过程和Linux上大差不差,要注意的是文件格式问题:

1
2
3
$ git clone -b v3.5.11 https://github.com/etcd-io/etcd.git #选择etcd版本源码
$ cd etcd

这里需要将scripts下所有sh文件转换为unix格式:

1
2
apt-get install -y dos2unix #使用dos2unix工具转换
find scripts/ -type f -name "*.sh" -exec dos2unix {} \;
1
$ ./build.sh #这个使用vim来修改格式,set ff=unix

这个时候基本上就编译好了,在/bin文件夹下面可以看到 etcd,etcdctl,etcdutl

Debug

使用Goland和dlv来调试etcd,先配置dlv:

1
2
3
4
git clone https://github.com/go-delve/delve.git
make build
./dlv -h #检查一下编译是否成功
mv dlv /usr/local/bin

参考

https://etcd.io/docs/v3.5/install/


etcd源码编译与调试
http://example.com/2024/03/12/etcd源码编译与调试/
Author
John Doe
Posted on
March 12, 2024
Licensed under