Skip to main content

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.

ObjectPurpose
DaemonSet ettus-device-pluginadvertises ettus.com/usrp; real-radio DUs request one
DaemonSet nvidia-device-plugin-daemonsetadvertises 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​

KeyTypeDefaultDescription
namespacestring"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).
imageRegistrystring""Per-chart image registry fallback; the umbrella's global.systemDefaultRegistry wins when set (one knob re-roots every racora image).
nodePlugins.ettus.enabledbooltrueAdvertises 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.repositorystring"ettus-device-plugin"USRP device plugin image name.
nodePlugins.ettus.image.tagstring"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.pullPolicystring"IfNotPresent"Image pull policy — IfNotPresent, because the images ship with the distribution.
nodePlugins.ettus.priorityClassNamestring"system-node-critical"Priority class for the plugin pods (system-node-critical: the node contract's advertisement must outlive workload pressure).
nodePlugins.ettus.nodeSelectorobject{}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.tolerationslist[{"operator":"Exists"}]Tolerations; the default tolerates every taint so the plugin runs on RT-tuned RF nodes.
nodePlugins.nvidia.enabledbooltrueUpstream k8s-device-plugin, unmodified; advertises nvidia.com/gpu for the CU-IP intelligence plane.
nodePlugins.nvidia.image.repositorystring"mirrored-k8s-device-plugin"NVIDIA device plugin image name.
nodePlugins.nvidia.image.tagstring"v0.17.0"NVIDIA device plugin image tag; the upstream k8s-device-plugin, mirrored unmodified; pinned in versions.yaml (third_party).
nodePlugins.nvidia.image.pullPolicystring"IfNotPresent"Image pull policy — IfNotPresent, because the images ship with the distribution.
nodePlugins.nvidia.runtimeClassNamestring"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.priorityClassNamestring"system-node-critical"Priority class for the plugin pods.
nodePlugins.nvidia.failOnInitErrorboolfalsefalse: a GPU-less node logs and idles instead of crash-looping.
nodePlugins.nvidia.nodeSelectorobject{}Node selector; empty = every node (a GPU-less node idles, see failOnInitError).
nodePlugins.nvidia.tolerationslist[{"effect":"NoSchedule","key":"nvidia.com/gpu","operator":"Exists"}]Tolerates the nvidia.com/gpu taint GPU nodes commonly carry.
nvidia.runtimeClass.createboolfalseWho 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.namestring"nvidia"Name of the RuntimeClass when created.
nvidia.runtimeClass.handlerstring"nvidia"containerd runtime handler the RuntimeClass points at.

Platform notes​

  • k3s: registers RuntimeClass/nvidia itself when the NVIDIA container toolkit is present — leave create: false.
  • Generic Kubernetes: set nvidia.runtimeClass.create=true and configure the containerd nvidia handler on GPU nodes, or let the NVIDIA GPU Operator own the RuntimeClass and keep create: false.
  • Both plugins mount /var/lib/kubelet/device-plugins; the USRP plugin is privileged and mounts /sys/bus/usb read-only. Clusters enforcing the restricted Pod Security level on racora-system must exempt it.