1

我按照指南教程成功使用 cri-o 运行 pod 和容器,默认cgroup_managercgroupfs.

当我尝试设置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.jsonsandbox_config.json相同

如何使用 cri-o 启动 pod 和容器 when cgroup_manager=systemd?有样品吗?

4

3 回答 3

3

当您在 /etc/crio/crio.conf 中将 cgroup 管理器切换到 systemd 时,您必须修改 pod yaml/json 以给 cgroup_parent 一个切片。所以在你的 sandbox_config.json 改变

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

像这样

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

尝试重新创建您的 pod,它现在应该可以正常启动了。

于 2019-10-18T14:06:52.453 回答
0

我在crictl.md中找到了一个成功的演示。

我认为可能是上面sandbox_config.json中的 linux cgroup 配置不适合 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": {
  }
}

但是,我仍然不知道如何为 systemd 配置linux.*in sandbox_config.json

于 2019-10-18T07:27:33.687 回答
0

我必须做的一件事是将我的 crictl 的 cgroup-manager 设置为 systemd: in crictl.yaml

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

据我了解,您不需要在 pod 配置中指定 cgroup(可以,但不是必需的)。CRI-O 和 crictl 只需要要求相同的 cgroup 层次结构

于 2019-10-18T14:00:33.313 回答