cgroups v2: CentOS Stream(8)에서 권한 없는 사용자에게 cgroup 컨트롤러가 위임되지 않았습니다.

cgroups v2: CentOS Stream(8)에서 권한 없는 사용자에게 cgroup 컨트롤러가 위임되지 않았습니다.

현재 권한이 없는 사용자에게 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=1in /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에서 테스트되었습니다.

  1. /etc/systemd/system/user-0.sliceroot사용자는 다음 내용으로 파일을 생성합니다 .
[Unit]
Before=systemd-logind.service
[Slice]
Slice=user.slice
[Install]
WantedBy=multi-user.target
  1. 사용자는 다음 내용으로 파일을 생성합니다./etc/systemd/system/[email protected]/delegate.confroot
[Service]
Delegate=cpu cpuset io memory pids
  1. /etc/systemd/system/user-.slice.d/override.confroot사용자는 다음 내용으로 파일을 생성합니다 .
[Slice]
Slice=user.slice

CPUAccounting=yes
MemoryAccounting=yes
IOAccounting=yes
TasksAccounting=yes
  1. sudo systemctl daemon-reload기계를 실행 하고 다시 시작하십시오.

  2. 위임된 컨트롤러를 확인하세요.비특권사용자가 명령을 실행합니다 cat /sys/fs/cgroup/user.slice/user-$(id -u).slice/user@$(id -u).service/cgroup.controllers.

관련 정보