K8s集群接入边缘GPU算力:从节点准备到任务验证

在K8s集群里调用边缘节点的GPU算力,核心是让节点上的GPU被容器运行时识别,再由device plugin上报给调度器。
本文按零基础可执行的顺序,走一遍从环境检查到跑通测试Pod的完整流程。

先确认硬件和系统条件

边缘节点通常分布在机房外或靠近数据源的位置,网络和供电不如中心机房稳定,操作前先确认以下条件:

  • 节点已安装与GPU型号匹配的NVIDIA驱动,执行 nvidia-smi 能看到显卡和驱动版本。
  • 节点已加入现有K8s集群,kubectl get nodes 状态为 Ready。
  • 容器运行时使用 containerd 或 Docker,版本需支持 nvidia-container-runtime。
  • 边缘节点与集群控制面网络互通,能拉取镜像仓库。

如果 nvidia-smi 报错,先解决驱动问题,不要继续配置K8s。

配置容器运行时识别GPU

以 containerd 为例,先安装 NVIDIA Container Toolkit,然后修改配置文件。

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd

配置文件路径通常在 /etc/containerd/config.toml,确认其中包含 nvidia runtime 的配置。
完成后用下面的命令验证容器能否看到GPU:

docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi

如果使用 containerd 自带命令行,可改用 ctr 运行等价测试。
输出中应显示与宿主机一致的GPU信息。

部署设备插件并调度GPU任务

节点识别GPU后,需要部署 NVIDIA device plugin,让K8s把 nvidia.com/gpu 作为可调度资源上报。

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.0/nvidia-device-plugin.yml
kubectl get pods -n kube-system | grep nvidia

插件Pod运行正常后,查看节点资源:

kubectl describe node <节点名称> | grep nvidia.com/gpu

如果显示 nvidia.com/gpu: 1 或更多,说明资源已注册。
接着创建一个申请GPU的测试Pod:

apiVersion: v1
kind: Pod
metadata:
  name: gpu-test
spec:
  containers:
  - name: cuda
    image: nvidia/cuda:12.0-base
    command: ["nvidia-smi"]
    resources:
      limits:
        nvidia.com/gpu: 1
  restartPolicy: Never

保存为 gpu-test.yaml 后执行 kubectl apply -f gpu-test.yaml,再用 kubectl logs gpu-test 查看输出。
能看到GPU信息即表示边缘GPU算力已接入集群。

常见报错与避坑点

  • Pod一直Pending:先检查节点是否有可分配GPU,kubectl describe pod 看事件里是否提示资源不足。
  • 驱动版本与CUDA镜像不兼容:镜像内CUDA版本不能高于宿主机驱动支持的上限,选镜像前查兼容表。
  • 边缘节点重启后GPU消失:确认驱动和容器运行时随系统自启,必要时写systemd单元。
  • 多节点GPU型号不一致:调度时用nodeSelector或污点区分,避免任务跑到算力不足的节点。
  • 网络不稳定导致镜像拉取失败:边缘节点可配置本地镜像缓存或私有仓库。

验证与后续建议

跑通测试Pod后,建议再部署一个真实推理任务,观察 kubectl top pod 和 nvidia-smi 的显存占用是否正常。
如果边缘节点数量增加,可以考虑用节点标签和亲和性策略把GPU任务固定到指定边缘机房。
整个流程的关键是驱动、运行时、device plugin三层都正常,缺一层都会导致GPU无法被调度。

常见疑问

GPU节点加入集群后,为什么Pod申请了GPU还是调度失败?

常见原因是device plugin未正常运行,或节点资源未上报。
先查 kubectl get pods -n kube-system 中插件状态,再看节点描述里的GPU数量。

边缘节点断网后GPU任务会怎样?

已运行的Pod通常继续运行,但控制面无法管理该节点。
恢复网络后节点会重新同步状态,期间新任务不会调度到该节点。

是否所有K8s版本都支持GPU调度?

GPU调度依赖device plugin机制,较新的K8s版本普遍支持,但具体兼容性需对照所用K8s版本和插件版本的发布说明。

分享到:
上一篇
K8s集群GPU算力池化:从零搭建共享调度环境
下一篇
服务器K8s集群GPU算力Serverless入门:从准备到验证
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意