Skip to content

Commit 9ddea30

Browse files
committed
feat: request nvidia RuntimeClass for GPU pods
On K3s the default runtime is runc, so a pod needs runtimeClassName: nvidia to actually get GPU access. Set it on the pod template only when gpu>0, so CPU/placeholder pods (gpu=0) schedule with the default runtime and require no RuntimeClass installed on the cluster. Verified on kind that gpu=0 leaves runtimeClassName absent from the pod spec.
1 parent 9599293 commit 9ddea30

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

src/main.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,23 @@ fn build_deployment(svc: &VllmService) -> Result<Deployment, Error> {
113113
..Default::default()
114114
};
115115

116+
// On K3s the default runtime is runc; a pod needs the "nvidia"
117+
// RuntimeClass to actually get GPU access. Request it only when GPUs
118+
// are requested, so gpu=0 (CI / CPU) pods schedule with the default
119+
// runtime and need no RuntimeClass installed on the cluster.
120+
let runtime_class_name = if svc.spec.gpu > 0 {
121+
Some("nvidia".to_string())
122+
} else {
123+
None
124+
};
116125
let template = PodTemplateSpec {
117126
metadata: Some(ObjectMeta {
118127
labels: Some(labels.clone()),
119128
..Default::default()
120129
}),
121130
spec: Some(PodSpec {
122131
containers: vec![container],
132+
runtime_class_name,
123133
..Default::default()
124134
}),
125135
};

0 commit comments

Comments
 (0)