Skip to main content
Container runtime selection is in private preview. Contact Support to request access before using a non-default runtime. Backwards compatibility between ncore releases isn’t guaranteed. An installed runtime doesn’t establish production support.
Use the 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 kubectl installed.
  • 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-gpu RuntimeClass, and workload metrics scraping in your cluster.
Confirm that the class exists:
If the class is absent, ask CoreWeave to confirm cluster enablement before continuing.

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 virt: "true" under spec.nodeParameters in that manifest. The following is an excerpt, not a complete Node Pool manifest:
This setting initializes the Nodes for virtualization workloads. Save the complete manifest in a file named 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 gpu-kata-pod.yaml:
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 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

A successful run includes:
With 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.
Last modified on October 29, 2026