问题:在使用 Podman 以无根用户(rootless)模式创建容器时,如果遇到分配系统 CPU 等资源时提示 cgroup 权限不足,这是因为无根用户没有直接访问 cgroup 相关资源的权限。
以下是一些解决方法(目前采用的办法3临时解决,,主要是更改系统目录权限 sudo chown -R $USER:$USER /sys/fs/cgroup/user.slice,但重新开机后该目录的权限会重置为root,而且此方法修改了系统权限,并不安全,尚未找到最佳解决办法,道友们有好的方法,欢迎留言~):
1. 启用 cgroup v2
无根用户在使用 cgroup v2 时,Podman 可以较好地管理资源。首先你需要确保系统启用了 cgroup v2,可以通过以下命令检查:
cat /proc/cgroups
你应该看到 cgroup2 被启用。如果还没有启用,你需要配置 Grub 来启用 cgroup v2:
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
然后重启系统:
sudo reboot
重启后再验证 cgroup v2 是否启用。
2. 更新 Podman 版本
确保你使用的是最新版本的 Podman,因为较新的版本对于无根用户支持 cgroup v2 的功能有所改善。
你可以通过以下命令更新 Podman:
sudo dnf update podman
或者其他包管理器,如 apt 或 yum,根据你的发行版。
3. 为无根用户配置正确的 cgroup 权限
在某些 Linux 发行版中,无根用户默认并没有访问 cgroup 的权限。你可以通过以下步骤手动授予这些权限:
(1) 检查当前用户的 cgroup 目录
找到无根用户对应的 cgroup 目录:
cat /proc/self/cgroup
(2) 确保目录权限正确
确保无根用户可以写入其 cgroup 目录。检查并更改权限:
sudo chown -R $USER:$USER /sys/fs/cgroup/user.slice/user-$(id -u).slice
这样应该可以解决大部分无根用户访问 cgroup 权限的问题。
4. 无法使用无根用户时考虑 root 模式
如果你仍然无法使用无根用户进行资源分配,可以考虑在 root 模式下运行 Podman。root 模式下具有完全的系统权限,可以避免无根用户权限问题,但要注意安全性问题:
sudo podman run --cpus 2 myimage
总结
Podman 无根用户模式的 cgroup 权限问题一般与 cgroup v2 相关,启用并正确配置 cgroup v2 是关键。如果仍然无法解决,可以考虑在 root 模式下运行 Podman 或者为无根用户正确配置 cgroup 权限。
标签:podman,sudo,用户,Podman,v2,cgroup,权限,CPU From: https://blog.csdn.net/m0_59644956/article/details/143105807