0. 概述
1. GPU 的使用
你需要在主机节点上安装对应厂商的 GPU 驱动并运行对应厂商的设备插件 (AMD、NVIDIA)。
当上面的条件都满足,Kubernetes 将会暴露 nvidia.com/gpu 或 amd.com/gpu 来作为 一种可调度的资源。
你也能通过像请求 cpu 或 memory 一样请求
- GPU 仅仅支持在 limits 部分被指定,这表明:
- 你可以仅仅指定 GPU 的 limits 字段而不必须指定 requests 字段,因为 Kubernetes 会默认使用 limit 字段的值来作为 request 字段的默认值。
- 你能同时指定 GPU 的 limits 和 requests 字段,但这两个值必须相等。
- 你不能仅仅指定 GPU 的 request 字段而不指定 limits。
- 容器(以及 pod)并不会共享 GPU,也不存在对 GPU 的过量使用。
- 每一个容器能够请求一个或多个 GPU。然而只请求一个 GPU 的一部分是不允许的。
示例:
[root@liqiang.io]# cat gpu.yaml
apiVersion: v1
kind: Pod
metadata:
name: cuda-vector-add
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vector-add
# https://github.com/kubernetes/kubernetes/blob/v1.7.11/test/images/nvidia-cuda/Dockerfile
image: "k8s.gcr.io/cuda-vector-add:v0.1"
resources:
limits:
nvidia.com/gpu: 1 # requesting 1 GPU