多个pod共享一张GPU
不行。pod在创建的时候请求gpu最低是卡级别,一张显卡只能分配给一个pod。但是一个pod是由多个容器组成的,所以同一个pod的容器可以共享分配给当前pod的所有GPU。
多个docker容器共享一张GPU
可以。通过nvidia-docker启动的容器可以共享一张GPU。因为容器是进程级的程序所以分配GPU可以达到显存级。
K8S对于GPU的资源分配有两个问题
- GPU无法进行拆分,为POD分配GPU资源的时候,只能整块分配
- 分配给该POD的GPU即使没有被使用,其他POD也无法再申请
申请GPU资源示例
apiVersion: v1
kind: Pod
metadata:
name: pod_name
spec:
nodeName: ml-node2.senses-ai.com #指定有gpu的节点
containers:
- name: container_name
image: image_name
resources:
limits:
nvidia.com/gpu: 2 # 请求分配 2个 GPU,这里只能填整数