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
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
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 componentstinkerbell: 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/k3shas sufficient space
What's Next
Your management cluster is ready. Now you can:
- Discover assets - Register physical hardware with IPMI
- Provision Ubuntu hosts - Install Ubuntu on assets
- Create Kubernetes clusters - Deploy Civo Stack, K3s, or Talos clusters