【问题标题】:How to run podman from within a kubernetes pod如何从 kubernetes pod 中运行 podman
【发布时间】: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


【解决方案1】:

我最近创建了Podman Jenkins agentdocker 镜像。在链接的帖子中,您还可以看到使用 Podman Jenkins 代理作为 Kubernetes pod 的 Jenkins 演示。

【讨论】:

    猜你喜欢
    • 2016-04-08
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2019-09-25
    • 2019-04-26
    • 2021-05-07
    • 2015-07-22
    相关资源
    最近更新 更多