Rancher Desktop Troubleshooting Guide
This guide covers common issues when using Rancher Desktop for local Kubernetes development with Backstage and Crossplane.
Common Issues
Rancher Desktop Won't Start
Symptoms
- Rancher Desktop UI doesn't open
rdctl
commands fail- Error messages about VM or container runtime
Solutions
-
Check System Requirements
# macOS: Ensure virtualization is enabled
sysctl -a | grep -E "machdep.cpu.features|VMX"
# Linux: Check virtualization support
egrep -c '(vmx|svm)' /proc/cpuinfo -
Reset Rancher Desktop
# Factory reset (removes all data)
rdctl factory-reset
# Start fresh
rdctl start -
Check Logs
# View logs
rdctl shell cat /var/log/rancher-desktop.log
# macOS log location
~/Library/Logs/rancher-desktop/
kubectl Connection Issues
Symptoms
kubectl: command not found
The connection to the server localhost:6443 was refused
- Wrong context selected
Solutions
-
Ensure Rancher Desktop is Running
rdctl start
rdctl version -
Check kubectl Path
# Rancher Desktop should add kubectl to PATH
which kubectl
# If not found, add manually
export PATH="$HOME/.rd/bin:$PATH" -
Verify Context
# Check current context
kubectl config current-context
# Switch to rancher-desktop
kubectl config use-context rancher-desktop
# Verify connection
kubectl cluster-info
Kubeconfig Issues
Symptoms
- Cannot find kubeconfig
- Authentication errors
- Context not found
Solutions
-
Check Kubeconfig Location
# Default location
ls -la ~/.kube/config
# Check KUBECONFIG environment variable
echo $KUBECONFIG -
Export Kubeconfig
# Export current config
kubectl config view --raw > rancher-desktop.kubeconfig
# Use exported config
export KUBECONFIG=$(pwd)/rancher-desktop.kubeconfig -
Verify Kubeconfig Contents
# Check clusters
kubectl config get-clusters
# Check contexts
kubectl config get-contexts
# View full config (sanitized)
kubectl config view -
Reset Kubeconfig
# Backup existing config
cp ~/.kube/config ~/.kube/config.backup
# Restart Rancher Desktop to regenerate
rdctl stop
rdctl start
Crossplane Installation Failures
Symptoms
- Helm install hangs or fails
- Crossplane pods not starting
- CRDs not installed
Solutions
-
Check Helm Repository
# Update helm repos
helm repo update
# List repos
helm repo list -
Namespace Issues
# Ensure namespace exists
kubectl create namespace crossplane-system
# Check for existing installation
helm list -n crossplane-system -
Resource Constraints
# Check node resources
kubectl describe nodes
# Increase Rancher Desktop resources
rdctl set --memory=8 --cpus=4
Provider Not Becoming Healthy
Symptoms
- Provider stuck in "Installing" state
- Provider pod CrashLoopBackOff
- Timeout waiting for provider
Solutions
-
Check Provider Logs
# Get provider pod
kubectl get pods -n crossplane-system | grep provider
# View logs
kubectl logs -n crossplane-system <provider-pod-name> -
Network Issues
# Test registry access
nerdctl pull xpkg.upbound.io/crossplane-contrib/provider-kubernetes:v0.14.0
# Check DNS
kubectl run -it --rm debug --image=busybox --restart=Never -- nslookup xpkg.upbound.io -
RBAC Issues
# Check service account
kubectl get sa -n crossplane-system
# Verify cluster role bindings
kubectl get clusterrolebindings | grep crossplane
Docker Desktop and Rancher Desktop Conflicts
Symptoms
- Symlink warnings in Rancher Desktop UI
- Messages like "The file ~/.docker/cli-plugins/docker-buildx should be a symlink to ~/.rd/bin/docker-buildx"
- Both Docker Desktop and Rancher Desktop installed on the same machine
Solutions
Option 1: Use Rancher Desktop Exclusively
# Remove Docker Desktop symlinks
rm ~/.docker/cli-plugins/docker-buildx
rm ~/.docker/cli-plugins/docker-compose
# Create symlinks to Rancher Desktop
ln -s ~/.rd/bin/docker-buildx ~/.docker/cli-plugins/docker-buildx
ln -s ~/.rd/bin/docker-compose ~/.docker/cli-plugins/docker-compose
# Stop Docker Desktop
osascript -e 'quit app "Docker"' # macOS
Option 2: Keep Both Installed (Side-by-Side)
- Keep Docker Desktop symlinks as-is (ignore Rancher warnings)
- Use Docker Desktop for Docker operations
- Use Rancher Desktop for Kubernetes (disable dockerd in Rancher settings)
- Access Rancher tools directly:
~/.rd/bin/docker-buildx
Option 3: Switch Between Them
- Only run one at a time
- Docker Desktop manages symlinks when running
- Rancher Desktop can use its own binaries from
~/.rd/bin/
Container Runtime Issues
Symptoms
- Images not pulling
- Containers not starting
- Permission errors
Solutions
-
Switch Container Engine
# Switch to dockerd
rdctl set --container-engine=dockerd
# Or switch to containerd
rdctl set --container-engine=containerd -
Clear Image Cache
# For containerd
rdctl shell nerdctl system prune -a
# For dockerd
rdctl shell docker system prune -a
Performance Issues
Symptoms
- Slow pod startup
- High CPU/memory usage
- UI unresponsive
Solutions
-
Adjust Resources
# Increase allocated resources
rdctl set --memory=16 --cpus=6
# Check current settings
rdctl list-settings -
Disable Unnecessary Features
# Disable Traefik if not needed
# (Configure in Rancher Desktop UI) -
Use Specific Kubernetes Version
# Use stable version instead of latest
rdctl set --kubernetes-version=1.28.5
Backstage-Specific Issues
Service Account Token Issues
Symptoms
- Backstage can't connect to cluster
- Authentication errors in logs
Solutions
-
Regenerate Token
# Delete old token
kubectl delete serviceaccount backstage-k8s-sa -n default
# Recreate
kubectl create serviceaccount backstage-k8s-sa -n default
kubectl create clusterrolebinding backstage-k8s-sa-binding \
--clusterrole=cluster-admin \
--serviceaccount=default:backstage-k8s-sa
# Generate new token
export K8S_SERVICE_ACCOUNT_TOKEN=$(kubectl create token backstage-k8s-sa -n default --duration=8760h) -
Verify Token
# Test token
kubectl --token=$K8S_SERVICE_ACCOUNT_TOKEN get nodes
Certificate Issues
Symptoms
- TLS verification errors
- Certificate expired warnings
Solutions
-
Skip TLS Verify (Development Only)
# In app-config.yaml
kubernetes:
clusterLocatorMethods:
- type: 'config'
clusters:
- url: https://127.0.0.1:6443
skipTLSVerify: true -
Get Cluster CA Certificate
# Extract CA cert
kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > ca.crt
Diagnostic Commands
Health Checks
# Rancher Desktop status
rdctl version
rdctl list-settings
# Kubernetes status
kubectl version
kubectl get nodes
kubectl get pods --all-namespaces
# Crossplane status
kubectl get providers
kubectl get pods -n crossplane-system
helm list -n crossplane-system
Log Collection
# Collect all relevant logs
mkdir rancher-debug
rdctl shell journalctl > rancher-debug/system.log
kubectl logs -n crossplane-system -l app=crossplane > rancher-debug/crossplane.log
kubectl get events --all-namespaces > rancher-debug/events.log
Getting Help
-
Rancher Desktop
- GitHub Issues: https://github.com/rancher-sandbox/rancher-desktop/issues
- Documentation: https://docs.rancherdesktop.io/
-
Crossplane
-
Backstage
- Discord: https://discord.gg/backstage
- GitHub: https://github.com/backstage/backstage