Skip to main content
Version: 0.2

Add Nodes to Cluster

Overview​

Colony allows you to add nodes to existing clusters to scale capacity or improve high availability. The process varies by cluster type.

Prerequisites​

Before adding nodes:

  • Existing cluster is healthy and operational
  • Additional assets available (status: "available" or "provisioned" for K3s)
  • Assets meet minimum requirements for cluster type
  • Network configuration ready (static IPs, DNS, etc.)

Add Nodes via UI​

Step 1: Navigate to Cluster​

  1. Log in to colony.konstruct.io
  2. Click Clusters in sidebar
  3. Select your cluster
  4. Click Add Nodes or Scale Cluster

Cluster with provisioned nodes

Add Nodes dropdown

Step 2: Choose Node Type​

Select what to add:

  • Control Plane Node: Adds to etcd quorum and API server
  • Worker Node: Adds capacity for workloads
tip

For high availability, aim for 3 or 5 control plane nodes (odd numbers). Add workers as needed for workload capacity.

Step 3: Configure New Nodes​

Similar to cluster creation:

  1. Select available assets
  2. Assign static IPs
  3. Configure network settings (DNS, NTP)
  4. Specify disk device

For K3s clusters, also provide SSH public key.

Add Worker Nodes dialog

Step 4: Review and Add​

Review configuration and click Add Nodes.

Cluster-Specific Notes​

Civo Stack (Talos)​

  • Nodes PXE boot and install Talos automatically
  • Join cluster using existing machine configurations
  • CSE components automatically deploy to new nodes
  • Timeline: 15-25 minutes per node

K3s​

  • Assets must already have Ubuntu 22.04 provisioned
  • K3s installed via SSH
  • Workers join using token from control plane
  • Timeline: 5-10 minutes per node

Talos Linux​

  • Nodes PXE boot and install Talos automatically
  • Join cluster using existing machine configurations
  • Remember to install CNI if not already present
  • Timeline: 8-15 minutes per node

Verify New Nodes​

Check Node Status​

# List all nodes
kubectl get nodes

# Watch nodes become Ready
kubectl get nodes -w

New nodes should appear and transition to "Ready" status.

Verify Workload Distribution​

# Check pods distributed across nodes
kubectl get pods -A -o wide

# Verify scheduler uses new nodes
kubectl get events --sort-by='.lastTimestamp'

Troubleshooting​

Node Won't Join​

Symptoms: New node doesn't appear in kubectl get nodes.

Solutions:

  • Verify asset provisioning completed successfully
  • Check network connectivity to control plane
  • Review colony-agent logs
  • For K3s: Verify SSH access works
  • For Talos: Check talosctl node status

Node Stuck NotReady​

Symptoms: Node appears but stays NotReady.

Solutions:

  • For Talos Linux: Ensure CNI is installed
  • Check kubelet logs: kubectl logs -n kube-system kubelet-<node>
  • Verify node can reach API server
  • Check for resource constraints (CPU, memory)

Workloads Not Scheduling​

Symptoms: Pods don't schedule to new nodes.

Solutions:

  • Check node taints: kubectl describe node <node-name>
  • Verify node has sufficient resources
  • Check pod resource requests match node capacity
  • Review scheduler logs

Remove Nodes​

To remove nodes from a cluster:

Drain Node​

# Gracefully evict pods
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data

Delete Node​

# Remove from cluster
kubectl delete node <node-name>

Deprovision Asset​

Via Colony UI:

  1. Navigate to Assets
  2. Select the node's asset
  3. Click Wipe Disk
  4. Confirm action

Asset will return to "available" status for reuse.

What's Next​

Need help? Join our Slack community for support!