Spin up your first GPU cluster
Provision your first multi-node GPU cluster using Crusoe Managed Kubernetes (CMK) or Slurm. When your cluster is up, you can use it to train models, serve inference, and run data processing pipelines.
Select an orchestration path:
- Kubernetes (CMK)
- Slurm
Crusoe Managed Kubernetes (CMK) gives you a Kubernetes control plane with GPU drivers, network operators, and storage add-ons preconfigured—so you can go from a fresh account to a distributed training job quickly.
Prerequisites
- A Crusoe Cloud account with an active project. See Create an account
- The Crusoe CLI installed and authenticated
- An SSH public key registered on your account. See Manage your SSH keys
kubectlinstalled locally
1. Create a cluster
- CLI
- UI
You can create clusters using the kubernetes clusters create command. Use the -help flag for an exhaustive list of options.
crusoe kubernetes clusters create \
--name my-first-cluster \
--cluster-version 1.31 \
--location us-east1-a \
--subnet-id 6f8e2a1b-7b1d-4c8e-a9f2-8e3d6c1f2a0c
--add-ons "nvidia_gpu_operator,nvidia_network_operator,crusoe_csi"
You may list the Kubernetes versions available for cluster creation by using the 'kubernetes clusters list-versions' command. Specifying an unqualified version (e.g. 1.30) when creating a cluster will provision the latest stable patch version associated with the minor version.
To create a CMK cluster via the console:
- From the console, select Orchestration > Kubernetes in the left nav.
- Click Create Cluster.
- Follow the UI flow to input all required elements.
- Optional selections include specifying the Service and Pod network CIDRs for Cilium and selecting one or more add-ons to deploy into the cluster.
- Click Create.
2. Add a GPU node pool
Node pools hold the actual GPU workers. Attach one to your cluster.
- CLI
- UI
Nodepools can be created by using the kubernetes nodepools create command. Nodepools must be created in the context of a specific cluster. Use the '--help' flag for an exhaustive list of options.
crusoe kubernetes nodepools create \
--name my-first-nodepool \
--cluster-id 6f8e2a1b-7b1d-4c8e-a9f2-8e3d6c1f2a0c \
--type h100-80gb-sxm-ib.8x \
--count 4 \
--ib-partition-id 4c8e2a1b-7b1d-4c8e-a9f2-8e3d6c1f2a0c \
To create a node pool via the console:
- From the console, select Orchestration > Kubernetes in the left nav.
- Select the cluster you want to edit.
- Click Create Node Pool.
- Fill out the required fields specifying the type of nodes you want to create and the count.
- Click Create.
3. Connect
Retrieve credentials for your cluster:
- CLI
- UI
Use the kubernetes clusters get-credentials command to retrieve credentials for a specific cluster.
crusoe kubernetes clusters get-credentials <name/id>
By default, credentials are stored in a file named ~/.kube/config. You may alter the path credentials are stored at by using the --kubeconfig-path flag. If you have existing configs stored in the same path, the new cluster kubeconfig will be appended to the end and set as the current context.
If you are an admin user, you can retrieve your cluster admin kubeconfig via the console:
- From the console, select Orchestration > Kubernetes in the left nav.
- Select the cluster you want credentials for.
- Click Generate Kubeconfig in the top right.
- Your kubeconfig will be downloaded.
Then confirm your nodes came up:
kubectl get nodes
All nodes should show STATUS: Ready within a couple of minutes. If a node stays NotReady, describe it with kubectl describe node <NAME>—usually the GPU operator is still installing drivers.
Prefer to manage your cluster as code with Terraform? Use the Manage your CMK clusters and Manage your Node Pools guides.
Slurm runs on top of Crusoe Managed Kubernetes (CMK). With this, you get the familiar Slurm scheduler UX (sbatch, srun, squeue, sinfo) with a Crusoe-managed Kubernetes control plane underneath, plus the same GPU hardware, InfiniBand fabric, and operator add-ons as CMK. If you already have an SSH key registered on your account, cluster creation is done with one-click. If you don't have an SSH key registered, you can supply a key during creation (and optionally adjust the VPC or subnet). The CLI mirrors that flow with a single command.
See the Slurm quickstart for the Terraform flow and additional details, including the full flag reference.
Prerequisites
- A Crusoe Cloud account with an active project. See Create an account.
- The Crusoe CLI installed and authenticated.
- An SSH public key registered on your account. See Manage your SSH keys.
1. Create a Slurm cluster
- CLI
- UI
Create a Managed Slurm cluster with a single command. This provisions the underlying Kubernetes cluster, Slurm controller, login nodes, and shared storage, and installs the required add-ons automatically.
crusoe slurm clusters create \
--name my-slurm-cluster \
--location us-southcentral1-a \
--keyfile ~/.ssh/id_ed25519.pub
The command waits for the operation to complete and prints the result.
2. Add worker nodes
Worker capacity is provided by node sets attached to the cluster. You can create GPU (NVIDIA) node sets for training and inference workloads, or CPU-only node sets for preprocessing, orchestration, or other auxiliary workloads.
- CLI
- UI
crusoe slurm nodesets create \
--name gpu-workers \
--cluster-name my-slurm-cluster \
--type b200-180gb-sxm-ib.8x \
--count 2 \
--ib-partition-id <IB_PARTITION_ID>
Use --ib-partition-id for multi-node InfiniBand workloads. See Supported GPU Types for available instance types.
- From your Slurm cluster's page in the console, click + Create Nodeset.
- In the Create Nodeset modal, accept the auto-generated name or enter your own.
- Choose the workload type: NVIDIA or CPU Only.
- Select an Instance Type and fill out the remaining required fields.
- Click Create Nodeset.
3. Connect and submit a job
- CLI
- UI
Grab the login-node endpoint from crusoe slurm clusters get <cluster>, then SSH into the cluster and confirm the scheduler is up:
ssh root@<LOGIN_NODE_ENDPOINT>
sinfo
# Worker nodes should show as idle and ready.
srun --gpus=8 nvidia-smi
Next steps
Decide how you want to use your cluster:
- Train models—Run distributed training on B200 GPUs with InfiniBand interconnects, using frameworks like PyTorch DDP, NVIDIA NeMo, DeepSpeed, and Ray Train. Multi-node jobs scale across the cluster's IB fabric without additional configuration on your end.
- Serve models—Run vLLM, NVIDIA Triton, or your own inference stack on hardware you control, colocated with your data and free from third-party rate limits. Autoscale replicas with the Cluster Autoscaler on CMK, or fix capacity with a dedicated Slurm partition.
- Run data processing—Execute GPU-accelerated preprocessing, embedding generation, or synthetic data pipelines with RAPIDS, Ray Data, or Spark on GPU. Reuse the same cluster for training and preprocessing to keep data close to the compute.