Skip to main content
Version: 0.3 (Next)

Initialize Management Cluster

Overview

The Colony management cluster is a K3s Kubernetes cluster that runs colony and Tinkerbell components for bare metal provisioning. This cluster orchestrates PXE booting, operating system installation, and cluster creation on your physical hardware.

Prerequisites

Before initializing your management cluster:

  • Colony CLI installed (see Install the CLI)
  • API key from colony.konstruct.io (see Create API Key)
  • Docker installed and running
  • Network interface connected to your asset management network
  • Static IP address in the same subnet as your assets
warning

The management cluster must be on the same Layer 2 network as your physical assets for PXE booting to work.

Initialize the Cluster

Run the colony init command to create your management cluster. Use the command you copied from the Colony UI after generating your API key:

colony init \
--api-key <from-ui> \
--data-center-id <from-ui> \
--load-balancer-interface eth0 \
--load-balancer-ip 192.168.1.10

Parameters

  • --api-key: Your Colony API key (from colony.konstruct.io)
  • --data-center-id: Your datacenter ID (from colony.konstruct.io)
  • --load-balancer-interface: Network interface connected to your asset management network (e.g., eth0, ens192, vlan1001)
  • --load-balancer-ip: Static IP in the same subnet as your assets for colony to use

Example:

colony init \
--api-key cd-c1d1e981b67e_30204cc8faf061722004fe7641ed381b94eae5b5 \
--data-center-id aa872c72-cbe1-498b-9b83-37a19e578d34 \
--load-balancer-interface vlan1001 \
--load-balancer-ip 10.1.1.5
tip

The load balancer IP serves as the PXE boot "next-server" (TFTP server). Ensure your DHCP server is configured to direct PXE clients to this address.

Configure kubectl Access

After initialization completes, export the kubeconfig:

export KUBECONFIG=~/.colony/config

Add this to your shell profile (.bashrc, .zshrc) to persist across sessions:

echo 'export KUBECONFIG=~/.colony/config' >> ~/.bashrc

Verify the Installation

Check that all Tinkerbell components are running:

kubectl get pods -A

You should see pods in these namespaces:

  • kube-system: K3s core components
  • tinkerbell: Tinkerbell services (boots, hegel, rufio, smee, tink-server)
  • colony: Colony agent

Wait for all pods to reach Running status before proceeding.

Troubleshooting

Initialization Fails

If colony init fails:

  • Check Docker: Ensure Docker is running (docker ps)
  • Network connectivity: Verify the interface is up and has an IP address
  • Port conflicts: Ensure ports 80, 443, 6443, 69 (TFTP) are not in use
  • Disk space: Ensure at least 20GB free space for container images

Pods Not Starting

If pods remain in Pending or CrashLoopBackOff:

# Check pod status
kubectl get pods -A

# View pod logs
kubectl logs -n tinkerbell <pod-name>

# Describe pod for events
kubectl describe pod -n tinkerbell <pod-name>

Common issues:

  • Image pull errors: Check internet connectivity for pulling container images
  • Resource constraints: Ensure host has minimum 8GB RAM, 4 CPUs
  • Storage issues: Verify /var/lib/rancher/k3s has sufficient space

What's Next

Your management cluster is ready. Now you can: