NebiusCluster Custom Resource
A NebiusCluster provisions a Nebius Managed Service for Kubernetes (mk8s) cluster with dedicated node groups for GPU inference and system workloads. It outputs a Secret containing the cluster kubeconfig. The kubeconfig carries only the cluster endpoint and CA certificate - Nebius clusters authenticate every client through Nebius IAM - so consumers pair it with the credentials Secret of the Nebius ClusterProviderConfig named default, the same identity that provisions the cluster. The cluster is created in the project that ClusterProviderConfig sets as its projectID; Nebius projects are bound to a region, so the project also determines where the cluster runs.
#Metadata
#Example
Manifest
apiVersion: infrastructure.modelplane.ai/v1alpha1
kind: NebiusCluster
metadata:
name: inference-eu-north
namespace: platform
spec:
kubernetesVersion: "1.34"
nodePools:
- name: system
role: System
platform: cpu-d3
preset: 8vcpu-32gb
nodeCount: 2
- name: gpu-h100
role: GPU
platform: gpu-h100-sxm
preset: 8gpu-128vcpu-1600gb
diskSizeGb: 200
nodeCount: 0
maxNodeCount: 8
# Joins an existing physical InfiniBand fabric in the project's region;
# use the fabric your GPU capacity is allocated on.
fabric:
type: InfiniBand
infiniband:
fabric: fabric-2
gpu:
acceleratorType: nvidia-h100
driversPreset: cuda13.0
#Spec
NebiusClusterSpec defines the desired state of NebiusCluster.
mk8s cluster Kubernetes version. Must be a version mk8s currently supports. Defaults to a version where Dynamic Resource Allocation (how GPUs bind to pods) is generally available.
Boot disk size in GB.
High-performance node-to-node fabric for multi-node engines, so a gang’s tensor-parallel traffic isn’t capped by TCP. Omit for standard VPC networking.
InfiniBand fabric configuration. Required when type is InfiniBand.
Identifier of the physical InfiniBand fabric to join (e.g. fabric-2). This selects existing Nebius infrastructure, not a name for a new resource: fabrics are per-region - see https://docs.nebius.com/compute/clusters/gpu#fabrics - and multi-node GPU capacity is allocated on specific fabrics, so use the fabric your capacity lives on.
Fabric technology. None uses standard VPC networking (TCP). InfiniBand places the group’s nodes in a GPU cluster on a physical InfiniBand fabric for GPUDirect RDMA across nodes; only useful on InfiniBand-capable platforms (e.g. gpu-h100-sxm). When set, Modelplane composes a GPU cluster on that fabric and places the group’s nodes in it.
GPU configuration. Required when role is GPU.
GPU accelerator type (e.g. nvidia-h100, nvidia-l40s). Used to label GPU nodes; the actual GPU and count are determined by the platform and preset.
NVIDIA driver stack mk8s preinstalls on the group’s nodes (e.g. cuda12.4, cuda13.0). Valid values depend on the platform and Kubernetes version, and mk8s validates them, so new presets work without a Modelplane update. Defaults to the only preset mk8s implements on the default Kubernetes version; older presets remain for older versions.
Maximum number of nodes for autoscaling. When set the node group autoscales between minNodeCount (or nodeCount) and this; mk8s autoscaling is server-side, no in-cluster autoscaler is installed. Omit for fixed-size groups - unlike other clouds there is no default, because mk8s node groups are either fixed size or autoscaled, never both.
Minimum number of nodes for autoscaling. Defaults to nodeCount when maxNodeCount is set. Requires maxNodeCount.
Unique name for this node group. Used as a suffix in the mk8s NodeGroup resource name.
Number of nodes. Fixed unless maxNodeCount enables autoscaling.
Nebius compute platform for the group’s nodes (e.g. gpu-h100-sxm, gpu-l40s-a, cpu-d3). Together with preset this replaces the instance type used by other clouds.
Resource preset within the platform (e.g. 8gpu-128vcpu-1600gb, 4vcpu-16gb). Determines the GPU, vCPU, and memory shape of each node.
Determines what workloads this group runs. System groups host controllers, gateways, and infrastructure. GPU groups host inference workloads and are tainted to exclude non-GPU pods.
#Status
Observed ModelCache RWX storage state, served by the Nebius shared filesystem mounted on every node group and Nebius’s csi-mounted-fs-path CSI driver.
Name of the Modelplane-managed ReadWriteMany StorageClass composed on this cluster for ModelCache PVCs. ModelCache reads this to target the cache PVC.
Key within the Secret that holds the credential data.
Name of the Secret.
Namespace of the Secret, when it isn’t this NebiusCluster’s namespace. Set on the credentials entry when the credential is reused from the Secret the Nebius ClusterProviderConfig references.
The type of credential this secret contains. Kubeconfig contains a kubeconfig file with the cluster endpoint and CA certificate. NebiusServiceAccountCredentials contains a Nebius service account JSON key that authenticates to the cluster via Nebius IAM.