环境背景: ack集群,gitlab-runner 运行在k8s中
早上一来同事告诉我好几个项目CI构建都在构建镜像阶段失败
查看日志如下:
1 | buildctl-daemonless.sh --debug build --frontend=dockerfile.v0 --local context=. --local dockerfile=. --output type=image,name=${IMAGE_TAG},push=true --opt build-arg:BUILD_DIR=${BUILD_ARGS} |
内心有点懵逼,我最近也没动过CI的流程,查看了一下docker的文档,发现此错误会出现在/proc/sys/user/max_user_namespaces
太小时,想看可能是凌晨时候这个k8s集群增加了一台服务器,流水线的这个pod被调度到新的机器上,查看一下新机器的max_user_namespaces
,比较偷懒,没有登陆服务器,直接在阿里云控制台远程执行,如下:
max_user_namespaces
值果真是0,使用如下命令修改:
1 | sudo echo "user.max_user_namespaces=28633" >> /etc/sysctl.conf |
再次构建命令发现如下报错:
1 | buildctl-daemonless.sh --debug build --frontend=dockerfile.v0 --local context=. --local dockerfile=. --output type=image,name=${IMAGE_TAG},push=true --opt build-arg:BUILD_DIR=${BUILD_ARGS} |
看报错提示应该是缺少fuse-overlayfs这个包,使用如下命令安装
1 | sudo yum install -y fuse-overlayfs |
再次执行构建镜像顺利通过
总结
我也不想知道为啥新添加机器突然会出现该问题,以前添加机器都是没这个问题,不纠结为啥了,问题解决就好了。