GKE集群中Jenkins agent调用docker时报/var/run/docker.sock权限被拒绝
GKE COS环境Jenkins Agent访问docker.sock权限报错遗漏配置排查
- 宿主机COS镜像docker组GID与容器内不匹配
GKE搭载Docker的Container-Optimized OS中,/var/run/docker.sock的默认属组为docker,但该组的GID并非通用的999,不同COS版本的GID存在差异。你在Jenkins agent镜像内配置的docker组GID和宿主机不一致时,即使jenkins用户加入了容器内的docker组,也没有权限访问宿主机的sock文件。
修复方案:在COS节点执行grep docker /etc/group获取宿主机docker组的GID,在Jenkins agent部署配置中添加supplementalGroups: [<获取到的宿主机docker GID>],直接给容器进程附加对应组权限,无需修改agent镜像内部配置。 - Pod安全规则限制
若集群开启了Pod Security Policy(PSP)或Pod Security Admission(PSA),需要确认Jenkins agent关联的安全策略允许挂载宿主机路径,且没有配置强制UID/GID的规则覆盖你设置的UID 1000。若开启了Seccomp/AppArmor规则,也需要确认规则没有禁止容器访问宿主机UNIX套接字。 - 挂载配置错误
检查/var/run/docker.sock的卷挂载配置是否设置了readOnly: true,docker.sock需要读写权限才能正常访问,必须将该参数改为false。 - 用户组配置未生效
若你是在agent镜像构建阶段将jenkins用户加入docker组,需要确认jenkins进程启动时是否重新加载了用户组配置,若构建完成后才修改用户组配置,需要重启agent进程才能生效。
内容的提问来源于stack exchange,提问作者Nurhun
相关产品推荐
相关产品推荐

