Generated at build time from
charts/racora-node/README.md(helm-docs:values.yaml+README.md.gotmpl); edit the source, not this page.
racora-node
The node contract's cluster-side half (see docs/reference/node-contract.md): the
hardware device plugins and the optional NVIDIA RuntimeClass. Part of the
racora umbrella (toggle node.enabled); installable alone into an existing
racora-system namespace.
| Object | Purpose |
|---|---|
DaemonSet ettus-device-plugin | advertises ettus.com/usrp; real-radio DUs request one |
DaemonSet nvidia-device-plugin-daemonset | advertises nvidia.com/gpu; CU-IP requests one |
RuntimeClass nvidia (optional) | the NVIDIA container runtime handler, when the platform does not provide it |
Why racora-system and not kube-system
Before v0.6.0 the two DaemonSets shipped as k3s auto-deploy manifests in
kube-system. Chart-owned objects live in a racora namespace so an in-place
upgrade never collides with those legacy objects; the k3s platform's installer
prunes the old ones.
Values
| Key | Type | Default | Description |
|---|---|---|---|
| namespace | string | "racora-system" | Namespace for the DaemonSets. racora-base creates racora-system. Deliberately NOT kube-system: an upgrade from the pre-v0.6.0 k3s addons must never collide with the old kube-system objects (the installer prunes those separately). |
| imageRegistry | string | "" | Per-chart image registry fallback; the umbrella's global.systemDefaultRegistry wins when set (one knob re-roots every racora image). |
| nodePlugins.ettus.enabled | bool | true | Advertises ettus.com/usrp so cells with a UHD radio backend land on the node that holds the B210. Requests one USRP per real-radio DU. |
| nodePlugins.ettus.image.repository | string | "ettus-device-plugin" | USRP device plugin image name. |
| nodePlugins.ettus.image.tag | string | "v0.1.0" | USRP device plugin image tag; pinned from ettus_device_plugin in versions.yaml (built from ru-support/b210/device-plugin). |
| nodePlugins.ettus.image.pullPolicy | string | "IfNotPresent" | Image pull policy — IfNotPresent, because the images ship with the distribution. |
| nodePlugins.ettus.priorityClassName | string | "system-node-critical" | Priority class for the plugin pods (system-node-critical: the node contract's advertisement must outlive workload pressure). |
| nodePlugins.ettus.nodeSelector | object | {} | Empty = every node. On a node without a USRP the plugin waits for one and never registers, so no ettus.com/usrp resource appears there at all. Pin to the node contract's RF nodes with {racora.io/rf-ready: "true"} if preferred. |
| nodePlugins.ettus.tolerations | list | [{"operator":"Exists"}] | Tolerations; the default tolerates every taint so the plugin runs on RT-tuned RF nodes. |
| nodePlugins.nvidia.enabled | bool | true | Upstream k8s-device-plugin, unmodified; advertises nvidia.com/gpu for the CU-IP intelligence plane. |
| nodePlugins.nvidia.image.repository | string | "mirrored-k8s-device-plugin" | NVIDIA device plugin image name. |
| nodePlugins.nvidia.image.tag | string | "v0.17.0" | NVIDIA device plugin image tag; the upstream k8s-device-plugin, mirrored unmodified; pinned in versions.yaml (third_party). |
| nodePlugins.nvidia.image.pullPolicy | string | "IfNotPresent" | Image pull policy — IfNotPresent, because the images ship with the distribution. |
| nodePlugins.nvidia.runtimeClassName | string | "nvidia" | The plugin discovers GPUs through the driver, so it must run under the NVIDIA runtime; without it the plugin starts, finds no devices and advertises nothing. Empty string renders no runtimeClassName (clusters without an nvidia containerd handler, e.g. CI). |
| nodePlugins.nvidia.priorityClassName | string | "system-node-critical" | Priority class for the plugin pods. |
| nodePlugins.nvidia.failOnInitError | bool | false | false: a GPU-less node logs and idles instead of crash-looping. |
| nodePlugins.nvidia.nodeSelector | object | {} | Node selector; empty = every node (a GPU-less node idles, see failOnInitError). |
| nodePlugins.nvidia.tolerations | list | [{"effect":"NoSchedule","key":"nvidia.com/gpu","operator":"Exists"}] | Tolerates the nvidia.com/gpu taint GPU nodes commonly carry. |
| nvidia.runtimeClass.create | bool | false | Who owns RuntimeClass/nvidia. k3s registers it itself when the NVIDIA container toolkit is present, so the k3s platform leaves create=false. A generic cluster sets create=true (platforms/kubernetes/values.yaml) unless the NVIDIA GPU Operator already owns it. |
| nvidia.runtimeClass.name | string | "nvidia" | Name of the RuntimeClass when created. |
| nvidia.runtimeClass.handler | string | "nvidia" | containerd runtime handler the RuntimeClass points at. |
Platform notes
- k3s: registers
RuntimeClass/nvidiaitself when the NVIDIA container toolkit is present — leavecreate: false. - Generic Kubernetes: set
nvidia.runtimeClass.create=trueand configure the containerdnvidiahandler on GPU nodes, or let the NVIDIA GPU Operator own the RuntimeClass and keepcreate: false. - Both plugins mount
/var/lib/kubelet/device-plugins; the USRP plugin is privileged and mounts/sys/bus/usbread-only. Clusters enforcing therestrictedPod Security level onracora-systemmust exempt it.