GPU调度 本文主要介绍GPU调度。 CCE支持在容器中使用GPU资源。 前提条件 1、创建GPU类型节点,具体请参见创建节点。 2、安装gpubeta插件,安装时注意要选择节点上GPU对应的驱动。 3、gpubeta会把驱动的目录挂载到/usr/local/nvidia/lib64,在容器中使用GPU资源需要将/usr/local/nvidia/lib64追加到LDLIBRARYPATH环境变量中。 通常可以通过如下三种方式追加。 制作镜像的Dockerfile中配置LDLIBRARYPATH。(推荐) ENV LDLIBRARYPATH /usr/local/nvidia/lib64:$LDLIBRARYPATH 镜像的启动命令中配置LDLIBRARYPATH。 /bin/bash c "export LDLIBRARYPATH/usr/local/nvidia/lib64:$LDLIBRARYPATH && ..." 创建工作负载时定义LDLIBRARYPATH环境变量(需确保容器内未配置该变量,不然会被覆盖)。 env: name: LDLIBRARYPATH value: /usr/local/nvidia/lib64 使用GPU 创建工作负载申请GPU资源,可按如下方法配置,指定显卡的数量。 apiVersion: apps/v1 kind: Deployment metadata: name: gputest namespace: default spec: replicas: 1 selector: matchLabels: app: gputest template: metadata: labels: app: gputest spec: containers: image: nginx:perl name: container0 resources: requests: cpu: 250m memory: 512Mi nvidia.com/gpu: 1 申请GPU的数量 limits: cpu: 250m memory: 512Mi nvidia.com/gpu: 1 GPU数量的使用上限 imagePullSecrets: name: defaultsecret 通过 nvidia.com/gpu 指定申请GPU的数量,支持申请设置为小于1的数量,比如 nvidia.com/gpu: 0.5 ,这样可以多个Pod共享使用GPU。GPU数量小于1时,不支持跨GPU分配,如0.5 GPU只会分配到一张卡上。 指定nvidia.com/gpu后,在调度时不会将负载调度到没有GPU的节点。如果缺乏GPU资源,会报类似如下的Kubernetes事件。 0/2 nodes are available: 2 Insufficient nvidia.com/gpu. 0/4 nodes are available: 1 InsufficientResourceOnSingleGPU, 3 Insufficient nvidia.com/gpu. 在CCE控制台使用GPU资源,只需在创建负载时,勾选GPU配额,并指定使用的比例即可,如下图所示。 图 使用GPU