问题描述
在某些特定的Kubernetes版本GPU节点内重启Kubelet和Docker服务时,发现容器未启动。
问题原因
Cgroup Driver的类型为cgroupfs,导致容器未被启动。
解决方案
- 登录GPU节点,执行以下命令,确认Cgroup Driver的类型为cgroupfs。
docker info | grep -i cgroup
系统显示类似如下。Cgroup Driver: cgroupfs
- 执行以下命令,更新
/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 - 执行以下命令,停止Kubelet服务。
service kubelet stop
系统显示类似如下。Redirecting to /bin/systemctl stop kubelet.service
- 执行以下命令,重启Docker服务。
service docker restart
系统显示类似如下。Redirecting to /bin/systemctl restart docker.service
- 执行以下命令,启动Kubelet服务。
service kubelet start
系统显示类似如下。Redirecting to /bin/systemctl start kubelet.service
- 执行以下命令,确认Cgroup Driver的类型为systemd。
docker info | grep -i cgroup
系统显示类似如下。
Cgroup Driver: systemd
适用于
- 容器服务Kubernetes版