Configure Kubernetes and WEKA for CoreWeave SUNK
Configure CoreWeave SUNK so NeuralMesh Axon keeps stable, non-contended CPU access while Slurm manages the remaining compute resources on shared nodes.
Overview
This deployment requires strict CPU isolation. Kubernetes reserves CPU IDs for the OS and platform daemons. WEKA requests whole CPUs so the client pod receives Guaranteed QoS and exclusive CPU assignment. SUNK then reflects both CPU sets in Slurm automatically.
Complete these tasks:
Configure
kubeletto use static CPU management and reserve the required CPU IDs.Set
cpuPolicy: autoin thewekaClientdefinition so SUNK can exclude those CPUs from Slurm scheduling.
For more platform details, see CoreWeave SUNK Documentation.
Supported product versions
This configuration supports:
CoreWeave SUNK v7.3.0 or newer.
WEKA Operator v1.11.0 or newer.
WEKA software v4.4.26 or newer.
Kubernetes v1.32 or newer.
SUNK node architecture and CPU isolation
The diagram below explains how WEKA and SUNK components interact on a NeuralMesh Axon cluster running Kubernetes.

Key components:
WEKA storage cluster: The WEKA storage cluster provides the backend data path and runs on all Kubernetes nodes. The WEKA client pod connects to it directly over the storage network.
NeuralMesh Axon node: A worker node that can host Kubernetes services, the WEKA client pod, and Slurm jobs on the same server. CPU isolation keeps these workloads from competing for the same CPUs.
kubelet:
kubeletusescpuManagerPolicy: staticto manage dedicated CPUs.reservedSystemCPUsremoves specific CPU IDs from allocatable capacity for the OS and Kubernetes daemons.WEKA client pod: The WEKA client pod uses
cpuPolicy: auto. Kubernetes assigns exclusive CPUs to that pod from the remaining allocatable pool.SUNK Operator: The SUNK Operator runs as a single deployment in Kubernetes. It reads the system CPU reservation and the CPUs assigned to the WEKA client pod. It excludes those CPU IDs from Slurm and exposes only the remaining CPUs to Slurm.
Slurm compute pool: The Slurm compute pool uses the CPU IDs that remain after the system reservation and the WEKA client allocation. Slurm jobs run only in this pool.
Data and control flow
kubeletremovesreservedSystemCPUsfrom allocatable capacity.The WEKA client pod receives exclusive CPUs from the remaining allocatable pool.
The SUNK Operator removes both CPU sets from Slurm scheduling.
Slurm runs batch jobs on the remaining CPUs only.
Before you begin
Confirm the worker nodes use a
kubeletconfiguration you can update.Identify the CPU IDs reserved for the OS and Kubernetes daemons.
Decide the whole CPU count required by the WEKA client pod.
On hyperthreaded servers, identify the sibling CPU IDs for every reserved physical core.
If the cluster runs Kubernetes v1.32 or later, plan to enable
strict-cpu-reservation.
Related topics
Configure kubelet CPU management
Configure kubelet static CPU management so the OS keeps reserved CPUs and the WEKA client pod receives dedicated CPUs from the allocatable pool.
For the full CPU isolation rationale, HyperThreading sibling guidance, and Kubernetes version-specific reservation options, see WEKA Operator best practices.
Procedure
Identify the active
kubeletconfiguration:
If multiple configurations exist, modify the ConfigMap that applies to the worker nodes.
Edit the ConfigMap:
Apply the following settings:
reservedSystemCPUs takes CPU IDs and not a core count. Reserve at least one physical core for the OS. On hyperthreaded servers, include both sibling threads for each reserved core.
strict-cpu-reservation requires Kubernetes v1.32 or later. On earlier versions, omit the featureGates and cpuManagerPolicyOptions blocks. Without strict reservation, Burstable and BestEffort pods can still use reserved system CPUs.
Apply the updated ConfigMap to the worker nodes by using the CoreWeave SUNK rollout or restart procedure used in your environment.
The CPU reservation does not become active immediately. The worker nodes must reload the updated kubelet configuration, and the kubelet process must restart before the new reservation takes effect.
Configure WEKA client CPU policy
Set cpuPolicy: auto in the wekaClient definition.
The wekaClient CRD (weka.weka.io/v1alpha1) exposes a cpuPolicy field. Use cpuPolicy: auto for SUNK v6.5.0 or later.
The following table describes the available policy values.
auto
WEKA or the operator selects the best policy automatically. Sets request == limit (whole CPUs), resulting in Kubernetes Guaranteed QoS.
Recommended for SUNK environments.
manual
The caller specifies exact CPU IDs by way of coreIds. Sets request != limit, preventing Kubernetes exclusive core allocation.
Useful as a temporary workaround.
Procedure
Define the
wekaClientwithcoresNumset to an explicit CPU count andcpuPolicyset toauto:
Understand SUNK CPU exclusion
When cpuPolicy: auto is used with a whole CPU count in coresNum, Kubernetes assigns the pod Guaranteed QoS (request == limit). With cpuManagerPolicy: static, the WEKA client pod receives exclusive CPUs. SUNK detects that allocation and excludes those CPUs, together with reservedSystemCPUs, from the Slurm cgroup configuration.
The SUNK Operator reads the CPU IDs reserved for the system and the CPU IDs assigned to the WEKA client pod. It then populates CPUSpecList in Slurm accordingly. No manual slurm.conf changes are required.
The resulting Slurm node state reflects the combined exclusion set. The exact values vary by CPU topology and the final WEKA client placement.
Last updated