Skip to main content

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

  1. 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
  2. Reset Rancher Desktop

    # Factory reset (removes all data)
    rdctl factory-reset

    # Start fresh
    rdctl start
  3. 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

  1. Ensure Rancher Desktop is Running

    rdctl start
    rdctl version
  2. Check kubectl Path

    # Rancher Desktop should add kubectl to PATH
    which kubectl

    # If not found, add manually
    export PATH="$HOME/.rd/bin:$PATH"
  3. 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

  1. Check Kubeconfig Location

    # Default location
    ls -la ~/.kube/config

    # Check KUBECONFIG environment variable
    echo $KUBECONFIG
  2. Export Kubeconfig

    # Export current config
    kubectl config view --raw > rancher-desktop.kubeconfig

    # Use exported config
    export KUBECONFIG=$(pwd)/rancher-desktop.kubeconfig
  3. Verify Kubeconfig Contents

    # Check clusters
    kubectl config get-clusters

    # Check contexts
    kubectl config get-contexts

    # View full config (sanitized)
    kubectl config view
  4. 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

  1. Check Helm Repository

    # Update helm repos
    helm repo update

    # List repos
    helm repo list
  2. Namespace Issues

    # Ensure namespace exists
    kubectl create namespace crossplane-system

    # Check for existing installation
    helm list -n crossplane-system
  3. 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

  1. Check Provider Logs

    # Get provider pod
    kubectl get pods -n crossplane-system | grep provider

    # View logs
    kubectl logs -n crossplane-system <provider-pod-name>
  2. 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
  3. 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

  1. Switch Container Engine

    # Switch to dockerd
    rdctl set --container-engine=dockerd

    # Or switch to containerd
    rdctl set --container-engine=containerd
  2. 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

  1. Adjust Resources

    # Increase allocated resources
    rdctl set --memory=16 --cpus=6

    # Check current settings
    rdctl list-settings
  2. Disable Unnecessary Features

    # Disable Traefik if not needed
    # (Configure in Rancher Desktop UI)
  3. 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

  1. 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)
  2. Verify Token

    # Test token
    kubectl --token=$K8S_SERVICE_ACCOUNT_TOKEN get nodes

Certificate Issues

Symptoms

  • TLS verification errors
  • Certificate expired warnings

Solutions

  1. Skip TLS Verify (Development Only)

    # In app-config.yaml
    kubernetes:
    clusterLocatorMethods:
    - type: 'config'
    clusters:
    - url: https://127.0.0.1:6443
    skipTLSVerify: true
  2. 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

  1. Rancher Desktop

  2. Crossplane

  3. Backstage