Kubernetes场景下基于Nvidia GPU Operator 实现图形渲染能力

背景

现需要在Kubernetes平台上以容器的形态部署业务程序,借助NVIDIA 开源的GPU-operator组件来实现GPU显卡的调度和渲染能力。
方案简介

通过在Kubernetes集群部署gpu-operator全家桶程序,它提供了nvidia驱动的安装,实现了deviceplugin能力提供了gpu显卡的调度能力,还提供了gpu相关的指标。

image
实施步骤

在安装gpu-operator之前需要确保基础环境的一致:
GPU显卡型号: Nvidia T4
GPU节点操作系统: Ubuntu22.04
容器引擎: docker
安装nvidia gpu-operator

可参考nvidia官方文档资料: https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html#
由于安装形式是operator,需要先配置helm客户端 helm的部署安装,可参考: https://support.huaweicloud.com/usermanual-cce/cce_10_0144.html
添加nvidia helm仓库
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update

image
指定驱动版本安装gpu-operator
helm install –wait –generate-name \ -n gpu-operator –create-namespace \ nvidia/gpu-operator \ –set driver.version=470.141.03

image
需要注意部分镜像可能会拉取失败导致安装失败,可以提前准备好拉取到节点上
观察gpu-operator运行状态
由于nvidia驱动的下载编译安装,需要等待片刻才能就绪,观察kubernetes集群中gpu-operator的运行状态

image
此时集群还没下发GPU节点,部分daemonset程序还未拉起。扩容GPU节点池,创建GPU节点

image
节点下发后,可以看到,每个节点都会运行daemonset程序,实现nvidia驱动的安装,gpu显卡资源的上报和调度等

image
等待片刻后,各组件均已正常运行。(如果daemonset程序中,部分组件长时间未就绪,可通过手动重启pod进行解决)

image
查看GPU节点状态
可以看到节点状态为GPU驱动未就绪,现在点击节点可以发现GPU显卡配额

image
也可查看gpu节点的yaml进行确认

image
创建工作负载申请gpu显卡资源,下发图形渲染任务

使用图形渲染软件Blender,工作负载yaml如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
version: v1
name: blender
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: blender
version: v1
template:
metadata:
labels:
app: blender
version: v1
spec:
containers:
– image: swr.cn-east-3.myhuaweicloud.com/hz-cloud/blender:4.1.1
imagePullPolicy: IfNotPresent
name: container-1
resources:
limits:
nvidia.com/gpu: “1”
requests:
cpu: 250m
memory: 512Mi


apiVersion: v1
kind: Service
metadata:
labels:
app: blender
version: v1
name: blender
namespace: default
spec:
ports:

  • name: cce-service-0
    port: 3000
    protocol: TCP
    targetPort: 3000
    selector:
    app: blender
    version: v1
    type: NodePort
    等待Pod就绪:

image
登录pod进行确认gpu显卡是否已经挂载

image
查看容器中的环境变量,确认存在: NVIDIA_DRIVER_CAPABILITIES=all

image
访问业务前端配置渲染属性
配置渲染属性: 渲染引擎选择 Cycles,设备选择GPU计算

image
确认Blender程序已经探测到nvidia T4显卡

image
实施图形渲染

image
开始渲染,目前进度为:

image
观察容器的gpu使用情况
容器内可使用 watch -d nvidia-smi 动态查看gpu的使用情况: 可以发现显存和算力的使用都有在提升

image
关于GPU相关指标的查看

gpu-operator 会在集群中以daemonset的形式安装dcgm-exporter程序,该程序会通过9400端口暴露该GPU节点上的gpu相关指标

image
手动访问: curl podip:9400/metrics 查看指标:

image
后续集群如果集成了Prometehus监控系统可通过编写servicemonitor进行指标任务的采集,方便查看集群中GPU的使用情况。
来源(版权归原作者所有):https://bbs.huaweicloud.com/blogs/428524

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/419344.html

联系我们
联系我们
分享本页
返回顶部