cw-kata-nvidia-gpu RuntimeClass to run a GPU workload inside a QEMU virtual machine (VM) on CoreWeave Kubernetes Service (CKS). This guide deploys a CUDA vector-addition sample with the guest metrics agent required by CKS.
Prerequisites
Before you begin, confirm that you have the following:- A CKS cluster with cluster access configured and
kubectlinstalled. - Kubernetes permissions to create Node Pools, create and delete workload Pods, inspect Nodes and RuntimeClasses, list Pods in
cw-kata-system, and read workload Pod status, events, and logs. - A Node Pool approved by CoreWeave for GPU Kata testing that meets the platform requirements in the runtime catalog.
- CoreWeave enablement of the Kata controllers, the
cw-kata-nvidia-gpuRuntimeClass, and workload metrics scraping in your cluster.
Configure a Node Pool
Configure a Node Pool for virtualization workloads:1
Prepare the Node Pool manifest
Prepare a new Node Pool manifest following Create a Node Pool using Kubernetes. Use the instance type approved by CoreWeave for GPU Kata.
2
Enable virtualization and apply the manifest
Add This setting initializes the Nodes for virtualization workloads. Save the complete manifest in a file named
virt: "true" under spec.nodeParameters in that manifest. The following is an excerpt, not a complete Node Pool manifest:gpu-kata-nodepool.yaml and apply it:3
Check for GPU metrics placeholder Pods
After the Nodes join the cluster, check for GPU metrics placeholder Pods:The Kata metrics operator schedules one
kata-metrics-placeholder-* Pod per unused GPU. These Pods provide GPU metrics while no workload uses the GPU. Resolve missing or unhealthy placeholder Pods with CoreWeave before deploying the workload.Deploy the GPU Pod
Create and apply a Pod manifest that includes the GPU workload and guest metrics agent:1
Save the Pod manifest
Save the following manifest in a file named The RuntimeClass supplies virtualization Node selection, a matching hypervisor taint toleration, and scheduler memory overhead. If your Node Pool has additional taints, add only the tolerations required for that pool. See Workload scheduling.The Pod label
gpu-kata-pod.yaml:kata.coreweave.com/telemetry: "true" identifies the workload for GPU metrics scraping. CoreWeave enables the scrape configuration in your preview cluster.The metrics agent runs as a native sidecar without additional privileges or explicit resource requests. Its startup probe waits for the agent’s HTTP server before starting the CUDA container. VISIBLE_CDI_DEVICES gives the agent access to the GPU assigned to the workload. Keep this sidecar in GPU Kata workloads so CKS can monitor GPU health. HTTP probe success doesn’t verify GPU collection or delivery to CKS monitoring.The sample requests one GPU, 10Gi of container memory, and 20Gi of 1 GiB hugepages. For details about how these values relate, see GPU Kata resource requirements.2
Apply the Pod manifest
Verify the workload
Check the sample’s status and output, then remove the sample Pod:1
Check the Pod's status and events
2
Read the CUDA container's logs
restartPolicy: Never, the sample can reach a terminal phase. The native sidecar stops after the regular container exits.3
Inspect the metrics sidecar's logs
Inspect the metrics sidecar’s logs and work with CoreWeave to confirm that GPU metrics reach CKS monitoring:Expected output resembles the following. Timestamps and metric counts can vary:In this sample, the agent discovers one GPU and starts its metrics endpoint. The sidecar shuts down after the CUDA container exits. These logs show agent initialization; work with CoreWeave to confirm delivery to CKS monitoring.
4
Delete the sample Pod
After verification, delete the sample Pod:
Troubleshoot startup
For unresolved failures, provide CoreWeave with the Pod events and container logs.