Skip to main content

Manage your Node Pools

What to know about Node Pools

  • Node pools allow you to group one or more Crusoe Cloud instances of the same type and associate them to a specific cluster control plane, to function as worker nodes.
  • When creating a node pool, you must specify the number of VMs you want to create via a count field. Once specified, the node pool will maintain this VM count where possible. For example, if you stop or terminate one of the VMs in your node pool, the node pool will provision new VMs up till the count specified.
  • You may scale up or down your node pool by specifying a new count value. Note that setting a count value lower than the current number does not automatically delete VMs from your node pools. You must manually delete the instances you want removed.
  • We currently do not allow editing the startup script or image associated with node pools. To install packages or software on node bring-up, we recommend using Daemonsets.

Creating a New Node Pool

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 \

Viewing Existing Node Pools

Use the kubernetes nodepools list command to list all existing node pools across clusters. You can also use the `kubernetes nodepools get' command to retrieve individual node pool details.

crusoe kubernetes nodepools get <name/id>

Update your Node Pool

You can the following properties of your node pool:

  • Change the count of nodes in the node pool
  • Set the pool to use (or not use) local ephemeral NVMe for containerd storage (CLI and Terraform only)
  • Set the labels for your pool. The newly provided labels will overwrite all old labels. (CLI and Terraform only)
  • The version of the pool's Kubernetes worker nodes. You can get a list of available versions by running crusoe kubernetes versions list from the Crusoe CLI. (CLI and Terraform only)

Updating properties of a nodepool will update the nodepool template, but will not perform an in-place upgrade of the existing nodes in the pool. If you scale the nodepool after applying an update, the updated template will only apply to the newly created nodes. To update existing nodes, you must perform a rolling upgrade (see section below).

You may update the number of nodes in your nodepools by using the crusoe kubernetes nodepools update command.

crusoe kubernetes nodepools update <name/id> --count 3

For instructions on how to update additional elements of your nodepool (e.g. ephemeral storage for containerd, nodepool labels), run:

crusoe kubernetes nodepools update -h

Perform a Rolling Upgrade on your Node Pool

info

Rolling upgrades of nodepools is currently in Limited Availability and only offered through the Crusoe CLI and Terraform. If you would like to join the Limited Availability program and gain access to this feature, please contact customer support to request access.

If you have updated your nodepool template but still have existing nodes from an older template, you can perform a rolling upgrade of your nodepool to update existing nodes to the latest configuration.

Note: A rolling upgrade requires specification of a batch-size (number of nodes to upgrade at one time) or a batch-percentage (percent of total nodepool size to update at one time). During the upgrade process, your nodepool will be down however many nodes you specified in batch-size or batch-percentage. For minimal workload interruptions, use a batch-size of 1.

Once you have applied an update to your nodepool you can trigger a rollout of your updates to existing nodes in the pool. You must specify either a --batch-size or --batch-percentage flag to instruct the rollout process how to process your rollout. The limit to the number of nodes that can be upgraded at a time is 10. If you supply either a higher --batch-size than 10 or a --batch-percentage that results in a number greater than 10, your rollout will not start.

Example: Run a rolling upgrade, one node at a time

crusoe kubenetes nodepools rollout start <node-pool-name/node-pool-id> --batch-size 1`

Example: Run a rolling upgrade, 10% of the nodepool at a time

crusoe kubenetes nodepools rollout start <node-pool-name/node-pool-id> --batch-percentage 10`

You can monitor the status of the last initiated rollout.

crusoe kubernetes nodepools rollout status <node-pool-name/node-pool-id>

You can cancel an in progress rollout. Any in progress node upgrades will complete before the operation is cancelled. Subsequent rollouts on the same nodepool will pick up where the cancelled operation left off.

crusoe kubernetes nodepools rollout cancel <node-pool-name/node-pool-id>

Delete a Node Pool

You can delete nodepools by using the kubernetes nodepools delete command and specifying either the name of ID of the nodepool you want to delete.

crusoe kubernetes nodepools delete <name/id>

If you are having issues creating or deleting clusters, please contact support.