问题描述

在某些特定的Kubernetes版本GPU节点内重启Kubelet和Docker服务时,发现容器并未被启动。

 

问题原因

Cgroup Driver的类型为“cgroupfs”,导致容器未被启动。

 

解决方案

  1. 登录GPU节点,执行如下命令,确认Cgroup Driver的类型为“cgroupfs”。
    docker info | grep -i cgroup
    系统显示类似如下。
    Cgroup Driver: cgroupfs
  2. 执行如下命令,更新/etc/docker/daemon.json文件,将Cgroup Driver的类型修改为“systemd”。
    注:修改文件之前请先备份。
    cat >/etc/docker/daemon.json <<-EOF
    {
        "default-runtime": "nvidia",
        "runtimes": {
            "nvidia": {
                "path": "/usr/bin/nvidia-container-runtime",
                "runtimeArgs": []
            }
        },
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
            "max-size": "100m",
            "max-file": "10"
        },
        "oom-score-adjust": -1000,
        "storage-driver": "overlay2",
        "storage-opts":["overlay2.override_kernel_check=true"],
        "live-restore": true
    }
    EOF
  3.  执行如下命令,停止Kubelet服务。
    service kubelet stop
    系统显示类似如下。
    Redirecting to /bin/systemctl stop kubelet.service
  4. 执行如下命令,重启Docker服务。
    service docker restart
    系统显示类似如下。
    Redirecting to /bin/systemctl restart docker.service
  5. 执行如下命令,启动Kubelet服务。
    service kubelet start
    系统显示类似如下。
    Redirecting to /bin/systemctl start kubelet.service
  6. 执行如下命令,确认Cgroup Driver的类型为“systemd”。
    docker info | grep -i cgroup
    系统显示类似如下。
    Cgroup Driver: systemd

 

适用于

  • 容器服务 Kubernetes 版

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。