编译Kind

本文尝试使用 kind Git仓库最新源代码编译,以便能够从修复 排查X86移动云Kind创建失败 构建包含 zfs 工具的镜像

备注

我清理掉了所有本地kind镜像,从最初开始

  • 下载kind源代码并进行编译:

从kind的git源代码编译
# 编译kind,不影响镜像制作
make build
# 复制源码编译的kind执行程序到Go PATH
cp bin/kind $HOME/go/bin/

# 编译基础镜像(参考 `images/base <https://github.com/kubernetes-sigs/kind/tree/main/images/base>`_ )
cd images/base
make quick

# 编译节点 - 不要直接 build node-image ,会导致直接下载官方base镜像
kind build node-image

异常问题

这里我遇到一个问题,在 make quick 尝试创建 base-image 时候会报错,显示 zfs fs destroy 容器目录出现数据集正忙,无法删除而退出:

ERRO[0024] Error waiting for container: container c32a66a9a8e573412126728b5215edc2eb819b8af22efee5e4cedb1041d87108: driver "zfs" failed to remove root filesystem: exit status 1: "/usr/bin/zfs fs destroy -r zpool-data/05f8135122b3ccd853a663dee5b8a0d1e50d1c8c4449ba7401e33cee70b54771" => cannot destroy 'zpool-data/05f8135122b3ccd853a663dee5b8a0d1e50d1c8c4449ba7401e33cee70b54771': dataset is busy
make: *** [/home/huatai/docs/xcloud-env/kind/images/base/../Makefile.common.in:51: ensure-buildx] Error 125

另外, zfs list 显示大量的残留容器目录没有删除,晕倒:

NAME                                                                               USED  AVAIL     REFER  MOUNTPOINT
zpool-data                                                                        22.0G   839G     3.15G  /var/lib/docker
zpool-data/05f8135122b3ccd853a663dee5b8a0d1e50d1c8c4449ba7401e33cee70b54771         21K   839G     18.4M  legacy
zpool-data/05f8135122b3ccd853a663dee5b8a0d1e50d1c8c4449ba7401e33cee70b54771-init    25K   839G     18.4M  legacy
zpool-data/0e7zhf1ohmfdfgqnsq1gy0b7n                                                62K   839G     43.0M  legacy
zpool-data/15a80a720bcf7652b1b49a513a4bef6efd44eca38be6a0de12afabc6516e6611       74.5M   839G     74.5M  legacy
zpool-data/197f30ff6351df25493a07bba14c4872e7409532249ac7e93301a8f58cbeda06       80.6M   839G      172M  legacy
zpool-data/23ah042ipkjm8onfidhzu7ebt                                              7.35M   839G     2.87G  legacy
zpool-data/247gg7t6mnbvd291ms37wxyu1                                               126K   839G     2.87G  legacy
zpool-data/2c112dc17d1ed7b8a2172e6d3756cef1906714cbc6b2b16acde22f0e119fd5cd       2.64M   839G     2.89G  legacy
...

我想了一下,应该是很多次创建和删除 kind 的容器,但是这些容器内部都没有 zfs 工具,所以不能清理掉残留的容器

备注

暂时没有时间和精力折腾了,我觉得这个构建需要在普通文件系统上完成(将镜像中加入zfs工具),但是直接在zfs文件系统上build不行。还是等待下一个发布版本后再折腾