현재 권한이 없는 사용자에게 cgroup 컨트롤러를 위임하기 위해 CentOS Stream(8)을 새로 설치하도록 구성하려고 합니다. 그러나 나는 이것에 실패했습니다. 이틀 동안 온라인으로 검색해 보았는데 동일하거나 비슷한 문제가 있는 사람을 찾을 수 없습니다.
Podman을 사용하여 루트 없는 컨테이너를 실행하고 싶습니다. 그러나 권한이 없는 사용자는 cgroup 제어가 필요하기 때문에 실패했습니다 pids
. 그러나 다음 명령은 결과를 생성하지 않으며 이는 사용 가능한 cgroup 컨트롤러가 없음을 나타냅니다.
$ cat /sys/fs/cgroup/user.slice/user-$(id -u).slice/user@$(id -u).service/cgroup.controllers
내가 이해한 바로는 이 명령은 기본 구성에서 다음과 같은 결과를 생성해야 합니다(참조:docker.com):
$ cat /sys/fs/cgroup/user.slice/user-$(id -u).slice/user@$(id -u).service/cgroup.controllers
memory pids
물론 systemd.unified_cgroup_hierarchy=1
in /etc/default/grub
과 을 사용 하여 cgroups v2를 활성화했습니다 grub2-mkconfig
.
그래서 아래 설명된 명령을 시도했습니다.docker.com:
# mkdir -p /etc/systemd/system/[email protected]
# cat > /etc/systemd/system/[email protected]/delegate.conf << EOF
[Service]
Delegate=cpu cpuset io memory pids
EOF
# systemctl daemon-reload
마지막으로 재부팅했지만 효과가 없었습니다. 권한이 없는 사용자의 경우 여전히 cgroup 컨트롤러가 없습니다.
구성: CentOS Stream(8) 최신, Systemd v239
답변1
그래서 마침내 이 문제를 해결할 수 있었습니다. 나에게 이것은 설명된 문제 및 오류와 다소 관련이 있는 것 같습니다.여기, 그러나 추가 수정 없이는 솔루션이 작동하지 않았습니다.
아래에서는 cgroup 컨트롤러에 대한 위임이 제대로 작동하도록 하기 위해 수행한 단계를 확인할 수 있습니다. 감사해요마츠모토 류타로그의 일과 노력에 대해위에 언급된 문제들GitHub의 시스템 문제에 대한 심층 분석입니다. 우분투 22.04에서 테스트되었습니다.
/etc/systemd/system/user-0.slice
root
사용자는 다음 내용으로 파일을 생성합니다 .
[Unit]
Before=systemd-logind.service
[Slice]
Slice=user.slice
[Install]
WantedBy=multi-user.target
- 사용자는 다음 내용으로 파일을 생성합니다.
/etc/systemd/system/[email protected]/delegate.conf
root
[Service]
Delegate=cpu cpuset io memory pids
/etc/systemd/system/user-.slice.d/override.conf
root
사용자는 다음 내용으로 파일을 생성합니다 .
[Slice]
Slice=user.slice
CPUAccounting=yes
MemoryAccounting=yes
IOAccounting=yes
TasksAccounting=yes
sudo systemctl daemon-reload
기계를 실행 하고 다시 시작하십시오.위임된 컨트롤러를 확인하세요.비특권사용자가 명령을 실행합니다
cat /sys/fs/cgroup/user.slice/user-$(id -u).slice/user@$(id -u).service/cgroup.controllers
.