Skip to main content
The SunkCluster custom resource declares the desired state of a managed SUNK cluster. The SUNK operator reconciles a SunkCluster into the underlying NodePools, NodeSets, and SlurmCluster resources that make up a running cluster. Use this reference when authoring or reviewing a SunkCluster manifest to confirm field names, types, defaults, and accepted values, and to interpret the status conditions the operator reports back. This page is intended for cluster operators and platform engineers who manage SUNK clusters declaratively. This page documents every supported field in the SunkCluster spec, along with the status conditions reported on the resource. To learn how to apply a SunkCluster, see Create a SUNK cluster.

Resource definition

Top-level spec fields

The spec object configures the SUNK cluster. The following fields are supported:

NodeSpec

Each entry in spec.nodes defines one node group. The operator creates one NodePool and one NodeSet for each entry, and the count is kept in sync between them.

Allowed instance types

The instanceType field uses the Instance ID listed on the available instances page. The field accepts one of the following values:
  • epyc
  • cd-hp-a96-genoa
  • cd-gp-a192-genoa
  • cd-hc-a384-genoa
  • turin-gp
  • turin-gp-l
  • cd-gp-i64-erapids
  • h100
  • gd-8xh100ib-i128
  • h200
  • gd-8xh200ib-i128
  • a100
  • gd-8xa100-i128
  • b200-8x
  • gb200
  • gb200-4x
  • gd-1xgh200
  • gd-8xl40-i128
  • gd-8xl40s-i128
  • rtxp6000-8x
  • gb300-4x
  • gb300-4x-e

StorageConfig

The spec.storage object configures shared storage for the cluster.

VolumeSpec

LoginConfig

The spec.login object configures the login Pods, the groups whose members can access them, and the resources allocated to per-user and per-group Pods. Each user with access receives an individual login Pod, and each access group receives one shared login Pod.

LoginGroup

Each entry in login.groups configures login-Pod creation for a single group. The list uses name as a merge key.

LoginPodConfig

The login.userPods and login.groupPods objects each accept a LoginPodConfig.

ResourceConfig

AccessConfig

Annotations may resemble the following:

S6

Each entry in spec.s6 defines an s6 service script that runs on the targeted node types during initialization.
Each entry must set either script or packages, not both. The packages field is only valid when type is oneshot. For oneshot script entries, timeoutUp is required. For package installs, the operator applies an internal minimum timeout policy based on package count. For longrun entries, set at least one of timeoutUp or timeoutDown.

SchedulerConfig

The spec.scheduler object enables the SUNK scheduler.

NvidiaDevicePlugin

The spec.nvidiaDevicePlugin object configures the NVIDIA device plugin DaemonSet.

CertManager

The spec.certManager object configures the cert-manager deployment.

Status conditions

Use the status conditions to determine whether a SunkCluster is fully reconciled and, if not, which subsystem is still pending or has failed. The operator reports the cluster state through a standardized set of status.conditions. Each status condition includes a reason and a message that further describes the condition. The aggregate Ready condition is True when all dependent conditions are True. The status also reports lastReadyTime, which records the most recent time the Ready condition transitioned to True. This field distinguishes a cluster that is bootstrapping (never ready) from one that was previously ready and has regressed. The reason attached to each condition contains one of the following values: The message attached to a condition contains more detail. For dependent conditions, the message typically names the specific resources that are not yet ready (for example, NodePools not at target: [a192, gb200] or NodeSets not ready: [a192 (0/36 ready)]). For the aggregate Ready condition, the message lists the dependent conditions still pending (for example, Waiting for conditions: NodePoolsAvailable, NodeSetsAvailable, SlurmClusterAvailable).

SlurmCluster status conditions

The SlurmClusterAvailable condition on the SunkCluster aggregates the conditions reported by the underlying SlurmCluster resource. When SlurmClusterAvailable is not True, inspect the SlurmCluster itself to identify which subcomponent is pending or failing:
The SlurmCluster reports the following conditions, each of which must be True for SlurmClusterAvailable to aggregate to True:

Example manifest

The following example brings the preceding fields together into a complete manifest you can adapt for your own cluster. Use this manifest as a starting point and adjust the field values to match your cluster requirements. The following manifest creates a cluster with two control-plane nodes and four H100 GPU compute nodes, a 1 Ti home directory, an additional 1 Ti shared mount, and standard user and sudo groups.
Last modified on June 15, 2026