【发布时间】:2022-12-17 02:15:41
【问题描述】:
我们将 Jenkins 用于 CI/CD 解决方案,并且所有代码都是使用 jenkins 代理映像在 kubernetes pod 中运行的。我们已经升级到不使用守护进程的 kubernetes 1.20 版本。因此,作为替代方案,我们使用 podman。我们的 k8s pod 以用户“abc”运行。在用于旋转代理 pod 的 jenkins 代理映像中,我们安装了 podman,代理 pod 在 Linux 7.9 VM 上运行。 在 Linux VM 上,我们设置了 uid 和 gid
[xyz@oke-cdrnkbr37bq-nk4yoht2oja-svxwfrwpi5q-0 ~]$ cat /etc/subuid
xyz:100000:65536
abc:165536:65536
[xyz@oke-cdrnkbr37bq-nk4yoht2oja-svxwfrwpi5q-0 ~]$ cat /etc/subgid
xyz:100000:65536
zbc:165536:65536
现在,当 pod 在 Jenkins 中启动时,我们在 pod 中看不到 uid 映射 -
bash$ k exec -it pod-template-agent-d0tzf -n jenkins-ns -- bash
bash-4.4$ cat /proc/self/uid_map
0 0 4294967295
因此,如果我尝试在 k8s pod 中执行 podman 命令,我会不断收到以下错误 -
bash-4.4$ podman run fedora cat /proc/self/uid_map
Error: OCI runtime error: rootless container requires user namespaces
有什么想法可以解决这个用户命名空间错误并让 podman 工作吗?
【问题讨论】:
-
您能否提供更多关于您是如何设置集群的详细信息?您使用的是哪种 Kubernetes 解决方案——裸机还是云提供商?
-
检查 /etc/subgid 中是否应该有 'zbc'
-
我们正在使用 Oracle 云提供商来设置 kubernetes 集群。在运行 jenkins pod 的 VM 上,我已确保用户条目位于 subuid 和 subgid 文件中。当我登录到 k8s pod 时,我无法在 pod 中找到该映射。
-
您在 /etc/subuid 中有“abc”,但在 /etc/subgid 中有“zbc”。请检查这是故意的还是拼写错误。
-
检查这个redhat.com/sysadmin/podman-inside-kubernetes,并显示更多 pod-template yaml 文件是如何编写的,它也取决于你的云环境
标签: jenkins kubernetes podman