如何确保容器运行时是 kubernetes 节点的 nvidia-docker?

Posted

技术标签:

【中文标题】如何确保容器运行时是 kubernetes 节点的 nvidia-docker?【英文标题】:How to ensure the container runtime is nvidia-docker for the kubernetes node? 【发布时间】:2019-07-02 10:38:16 【问题描述】:

我需要检查一下 kubernetes 节点是否配置正确。需要为其中一个工作节点使用 nvidia-docker。

使用:https://github.com/NVIDIA/k8s-device-plugin

如何确认设备插件的配置是否正确?

$ kubectl describe node mynode
Roles:              worker
Capacity:
 cpu:                4
 ephemeral-storage:  15716368Ki
 hugepages-1Gi:      0
 hugepages-2Mi:      0
 memory:             62710736Ki
 nvidia.com/gpu:     1
 pods:               110
Allocatable:
 cpu:                3800m
 ephemeral-storage:  14484204725
 hugepages-1Gi:      0
 hugepages-2Mi:      0
 memory:             60511184Ki
 nvidia.com/gpu:     1
 pods:               110
System Info:
 Machine ID:                 f32e0af35637b5dfcbedcb0a1de8dca1
 System UUID:                EC2A40D3-76A8-C574-0C9E-B9D571AA59E2
 Boot ID:                    9f2fa456-0214-4f7c-ac2a-2c62c2ef25a4
 Kernel Version:             3.10.0-957.1.3.el7.x86_64
 OS Image:                   CentOS Linux 7 (Core)
 Operating System:           linux
 Architecture:               amd64
 Container Runtime Version:  docker://18.9.1
 Kubelet Version:            v1.11.2
 Kube-Proxy Version:         v1.11.2

但是,我可以在节点资源下看到nvidia.com/gpu,问题是:如果节点配置正确,Container Runtime Version 是否应该说nvidia-docker?目前,它显示docker,我猜这看起来很可疑!

【问题讨论】:

【参考方案1】:

不确定你是否已经这样做了,但似乎描述得很清楚:

安装 NVIDIA 驱动程序和 NVIDIA docker 后,您需要在您的节点上启用 nvidia 运行时,方法是按照指定的 here 编辑 /etc/docker/daemon.json。 所以正如指令所说,如果你可以看到runtimes 是正确的,你只需要编辑那个配置。

然后部署一个 DeamonSet(这是一种确保 pod 在每个节点上运行的方法,可以访问主机网络和设备):

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.11/nvidia-device-plugin.yml

现在您的容器已准备好使用 GPU - 如 here. 所述

【讨论】:

将gpu节点添加到现有集群时顺序是否相同?有什么需要注意的吗?

以上是关于如何确保容器运行时是 kubernetes 节点的 nvidia-docker?的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# Kubernetes 带你剖析容器运行时以及 CRI 原理(24)

如何入门k8s?

Kubernetes-Pod基本概念(六)

读书笔记 Kubernetes in Action

自建Kubernetes集群如何使用弹性容器实例ECI

kubernetes之kubelet运行机制分析