Troubleshooting Guide
Overview
This guide covers common issues and debugging techniques for Colony.
Management Cluster Issues
colony init Fails
Symptoms: Initialization fails with errors.
Common causes:
- Docker not running
- Ports in use (80, 443, 6443, 69)
- Interface doesn't exist or is down
- IP address not available on interface
- Insufficient disk space
Solutions:
# Check Docker
sudo systemctl status docker
sudo systemctl start docker
# Check ports
sudo netstat -tulpn | grep -E ':(80|443|6443|69)\s'
# Check interface
ip addr show eth0
ip link set eth0 up
# Check disk space
df -h /var/lib/rancher/k3s
Pods Won't Start
Symptoms: Tinkerbell or colony-agent pods stuck Pending or CrashLoopBackOff.
Solutions:
# Check pod status
kubectl get pods -A
# Describe pod for events
kubectl describe pod -n tinkerbell <pod-name>
# View logs
kubectl logs -n tinkerbell <pod-name>
# Check node resources
kubectl describe nodes
Common issues:
- Insufficient resources (need 8GB RAM, 4 CPUs)
- Image pull failures (check internet connectivity)
- Volume mount issues (check disk space)
Asset Discovery Issues
Asset Doesn't Appear
Symptoms: After colony add-ipmi, asset not in UI or kubectl.
Solutions:
# Test IPMI connectivity
ping <ipmi-ip>
curl -k https://<ipmi-ip>
# Check IPMI credentials (try web interface)
# https://<ipmi-ip>
# Check colony-agent logs
kubectl logs -n colony -l app=colony-agent -f
# Check rufio (IPMI controller)
kubectl logs -n tinkerbell -l app=rufio
Asset Stuck "discovering"
Symptoms: Asset remains in discovering status for >15 minutes.
Solutions:
# Check if asset powered on
# Via IPMI web interface or:
ipmitool -H <ipmi-ip> -U <user> -P <pass> power status
# Check PXE boot enabled in BIOS
# Access via IPMI console
# Check DHCP server
sudo journalctl -u dnsmasq # if using dnsmasq
# Verify DHCP leases
# Check TFTP server
kubectl logs -n tinkerbell -l app=smee
# Check Tinkerbell workflows
kubectl get workflows -A
kubectl describe workflow -n tink-system <workflow-name>
Provisioning Issues
Ubuntu Provisioning Fails
Symptoms: Asset returns to "available" without OS installed.
Solutions:
# Check workflow logs
kubectl logs -n tinkerbell -l app=tink-worker
# Check asset can reach Ubuntu mirrors
# Via IPMI console or if SSH available:
curl -I http://archive.ubuntu.com
# Check Tinkerbell hegel (metadata server)
kubectl logs -n tinkerbell -l app=hegel
# Verify disk exists and is writeable
# Check IPMI console for disk errors
Cluster Provisioning Stuck
Symptoms: Cluster stuck in provisioning, no progress.
Solutions:
# Check colony-agent logs
kubectl logs -n colony -l app=colony-agent -f
# Check specific workflow
kubectl get workflows -A
kubectl describe workflow -n tink-system <workflow-name>
# For Talos clusters: Check Talos API
talosctl --talosconfig ~/.talos/config version --nodes <node-ip>
# For K3s clusters: Check SSH access
ssh -i ~/.ssh/key kbot@<node-ip>
sudo journalctl -u k3s -f
Network Issues
PXE Boot Fails
Symptoms: Assets don't network boot.
Solutions:
-
Verify DHCP:
- Check DHCP server running and configured
- Verify PXE options (next-server, bootfile)
- Check DHCP leases
-
Verify TFTP:
# Test TFTP from another machine
tftp <load-balancer-ip>
tftp> get pxelinux.0 -
Check BIOS:
- Enable PXE boot
- Set boot order: Network first
- Disable secure boot if needed
-
Network connectivity:
- Same subnet as assets
- VLAN configuration correct
- Switch ports untagged
Can't Reach Nodes
Symptoms: kubectl times out, nodes unreachable.
Solutions:
# Test connectivity
ping <node-ip>
telnet <node-ip> 6443
# Check firewall
sudo iptables -L -n | grep 6443
# Verify static IPs assigned correctly
# Check Colony UI or kubectl get nodes -o wide
# Check API server running
kubectl logs -n kube-system -l component=kube-apiserver
Cluster Health Issues
Nodes NotReady
Symptoms: kubectl get nodes shows NotReady.
Solutions:
For Talos Linux: Install CNI
# Flannel
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
# Or Cilium
cilium install
For other issues:
# Check kubelet
kubectl describe node <node-name>
# Check node logs
# Talos:
talosctl --talosconfig ~/.talos/config logs --nodes <node-ip> kubelet
# K3s:
ssh kbot@<node-ip> sudo journalctl -u k3s -f