Mac M3 Pro构建的容器镜像在Jenkins K8s集群启动失败求助
解决思路
1. 排查Tini架构兼容性问题
你当前Dockerfile直接下载的Tini默认是AMD64架构二进制文件,如果Jenkins Kubernetes集群的节点是ARM/ARM64架构,会因为二进制不兼容导致系统识别不了该文件,进而报“no such file or directory”(这是架构不兼容时的典型报错,并非真的文件不存在)。
解决办法:
- 方式一:通过apt安装适配架构的Tini:Ubuntu官方源已收录Tini,直接替换Dockerfile中的下载步骤,更可靠:
# 替换原有的ADD和RUN chmod步骤 RUN apt-get install -y --no-install-recommends tini - 方式二:根据架构下载对应Tini:在Dockerfile中动态判断当前架构,下载匹配的二进制:
ENV TINI_VERSION v0.19.0 RUN ARCH=$(dpkg --print-architecture) && \ curl -Lo /sbin/tini https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-${ARCH} && \ chmod +x /sbin/tini
2. 验证镜像内Tini的存在性与权限
拉取集群使用的镜像artifactory.team/ssh-05ba8e,本地执行以下命令确认文件状态:
docker run --rm artifactory.team/ssh-05ba8e ls -l /sbin/tini
如果本地能看到文件,但集群中仍报错,尝试重新构建并推送镜像,排除镜像推送过程中的文件丢失问题。
3. 简化启动命令(临时替代方案)
如果不需要Tini的信号转发功能,可直接移除Tini相关配置,修改Pod YAML的启动命令:
command: - sleep args: - infinity
内容的提问来源于stack exchange,提问作者AhmFM
相关产品推荐
相关产品推荐

