используйте cri-o для запуска модуля и контейнера, когда cgroup_manager=systemd

Я успешно использую cri-o для запуска модуля и контейнера, следуя руководству и руководству, которые по умолчаниюcgroup_manager является cgroupfs.

когда я пытался установить cgroup_manager = "systemd" в /etc/crio/crio.conf и перезапустить crio оказание услуг.

затем я попробовал те же шаги в руководстве

POD_ID=$(sudo crictl runp test/testdata/sandbox_config.json)

получил ошибку ниже:

FATA[0000] run pod sandbox failed: rpc error: code = Unknown desc = cri-o configured with systemd cgroup manager, but did not receive slice as parent: /Burstable/pod_123-456

в sandbox_config.jsonто же, что и sandbox_config.json

Как использовать Cri-o для запуска стручка и контейнера, когда cgroup_manager=systemd? Есть образец?

3 ответа

Решение

Когда вы переключаете cgroup manager на systemd в /etc/crio/crio.conf, вам нужно изменить pod yaml/json, чтобы вместо этого cgroup_parent получил срез. Итак, в вашем sandbox_config.json измените

"linux": {
        "cgroup_parent": "/Burstable/pod_123-456",

к чему-то вроде этого

"linux": {
        "cgroup_parent": "podabc.slice",

Попробуйте воссоздать свой модуль, и теперь он должен нормально запуститься.

Одна вещь, которую мне нужно было сделать, это установить мой cgroup-manager для crictl на systemd:in crictl.yaml:

runtime-endpoint: unix:///var/run/crio/crio.sock
cgroup-manager: systemd

Насколько я понимаю, вам не нужно указывать контрольную группу в конфиге пода (можно, но это не обязательно). CRI-O и crictl просто должны запрашивать одну и ту же иерархию cgroup

Я нашел успешную демонстрацию на crictl.md.

Я думаю, что конфигурация cgroup linux в sandbox_config.json выше не подходит для systemd.

$ cat pod-config.json
{
    "metadata": {
        "name": "nginx-sandbox",
        "namespace": "default",
        "attempt": 1,
        "uid": "hdishd83djaidwnduwk28bcsb"
    },
    "log_directory": "/tmp",
    "linux": {
    }
}

$ cat container-config.json
{
  "metadata": {
      "name": "busybox"
  },
  "image":{
      "image": "busybox"
  },
  "command": [
      "top"
  ],
  "log_path":"busybox/0.log",
  "linux": {
  }
}

Однако я до сих пор не знаю, как настроить linux.* в sandbox_config.json для systemd.

Другие вопросы по тегам