You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes中如何为不同工作负载配置多运行时引擎?

为不同K8s工作负载指定不同容器运行时

方案可行性

完全可行。Kubernetes的RuntimeClass特性就是专门用来实现这一需求的:允许不同Pod指定不同的容器运行时,默认工作负载继续使用runc,仅GPU工作负载调用NVIDIA containerd运行时,彻底规避将NVIDIA运行时设为默认导致的Cilium兼容性问题。

具体配置步骤

1. 配置containerd支持多运行时

编辑containerd主配置文件(通常为/etc/containerd/config.toml),在现有runc配置基础上,添加NVIDIA运行时的定义,确保runc保持默认运行时:

[plugins."io.containerd.grpc.v1.cri".containerd]
  default_runtime_name = "runc"

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  runtime_type = "io.containerd.runc.v2"

# 添加NVIDIA运行时配置
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
  runtime_type = "io.containerd.runc.v2"
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
    BinaryName = "nvidia-container-runtime"

配置完成后重启containerd生效:

systemctl restart containerd

2. 创建RuntimeClass资源

RuntimeClass是Kubernetes的一种资源,用于关联集群中的容器运行时。创建runtimeclass-nvidia.yaml文件:

apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
  name: nvidia
handler: nvidia

其中handler字段必须与containerd配置中定义的NVIDIA运行时名称完全一致。执行命令创建该资源:

kubectl apply -f runtimeclass-nvidia.yaml

3. 为GPU工作负载指定RuntimeClass

在需要使用GPU的Pod或Deployment配置中,添加runtimeClassName: nvidia字段,示例Pod配置如下:

apiVersion: v1
kind: Pod
metadata:
  name: gpu-test-pod
spec:
  runtimeClassName: nvidia
  containers:
  - name: gpu-container
    image: nvidia/cuda:11.8.0-runtime-ubuntu22.04
    command: ["nvidia-smi"]
    resources:
      limits:
        nvidia.com/gpu: 1

未指定runtimeClassName的Pod会自动使用默认的runc运行时,不会影响Cilium等系统组件。

配置验证

  • 查看RuntimeClass资源状态:
    kubectl get runtimeclasses
    
  • 启动GPU测试Pod后,检查Pod事件确认运行时使用情况:
    kubectl describe pod gpu-test-pod
    
    在事件列表中可找到类似“Using runtime nvidia”的日志,验证运行时配置生效。
  • 确认Cilium Pod状态正常:
    kubectl get pods -n kube-system -l k8s-app=cilium
    

内容的提问来源于stack exchange,提问作者d s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:42:49