Common issues and solutions when using vind.
Symptoms:
vcluster createfails- Container exits immediately
- No cluster appears in
vcluster list
Solutions:
-
Check Docker is running:
docker ps
-
Check Docker resources:
docker system df docker system prune # If needed -
Check available disk space:
df -h
-
View detailed logs:
vcluster create my-cluster --debug
-
Check Docker logs:
docker exec vcluster.cp.my-cluster journalctl -u vcluster --nopager
Symptoms:
- Error:
port is already allocated - Cannot bind to port
Solutions:
-
Find what's using the port:
# macOS/Linux lsof -i :8443 # Or netstat -an | grep 8443
-
Use a different port:
vcluster create my-cluster \ --set experimental.docker.ports[0]="8444:8443" -
Stop conflicting service:
# Find and stop the service using the port
Symptoms:
- Container fails to start
- Out of memory errors
- CPU throttling
Solutions:
-
Check Docker resources:
docker stats
-
Increase Docker resources:
- Docker Desktop: Settings → Resources
- Increase CPU and Memory allocation
-
Pause other clusters:
vcluster list vcluster pause other-cluster
Symptoms:
- Created clusters don't appear in the Platform UI
- Dashboard shows no clusters
Cause:
The vCluster Platform only discovers clusters created after the platform is started. If you create clusters first and then start the platform, they will not be synced.
Solutions:
-
Start the platform first, then create clusters:
# Start platform first vcluster platform start # Then create clusters - they will appear in the UI vcluster create my-cluster
-
If you already have clusters created before the platform:
- Delete and recreate the clusters after starting the platform
vcluster platform start vcluster delete my-cluster vcluster create my-cluster
Symptoms:
vcluster connectfailskubectlcommands fail- Connection refused errors
Solutions:
-
Verify cluster is running:
vcluster list docker ps | grep vcluster -
Check cluster status:
vcluster describe my-cluster
-
Reconnect:
vcluster connect my-cluster --update-current
-
Check kubeconfig:
kubectl config get-contexts kubectl config use-context vcluster-docker_my-cluster
-
Verify port is accessible:
# Get the port docker port vcluster-my-cluster # Test connection curl -k https://localhost:<port>
Symptoms:
kubectlsays context not found- Cannot switch contexts
Solutions:
-
Reconnect to cluster:
vcluster connect my-cluster
-
Manually add context:
vcluster connect my-cluster --update-current
-
Disconnect from cluster:
vcluster disconnect my-cluster
-
Check kubeconfig location:
echo $KUBECONFIG kubectl config view
Symptoms:
- Service created but EXTERNAL-IP is
<pending> - Cannot access service
Solutions:
-
Load balancer is enabled by default
-
Check Docker network:
docker network inspect vcluster-my-cluster
-
On macOS, check port forwarding:
# May need sudo for privileged ports # Load balancer is enabled by default
Symptoms:
- Service has EXTERNAL-IP but cannot access
- Connection refused
Solutions:
-
Check service status:
kubectl get svc my-service
-
Verify IP is in Docker network:
docker network inspect vcluster-my-cluster | grep -A 5 "IPAM"
-
Test connectivity:
curl http://<EXTERNAL-IP> ping <EXTERNAL-IP>
-
Check firewall rules:
# macOS sudo pfctl -sr
Symptoms:
- Images still pull from registry
- No caching benefit
Solutions:
-
Verify containerd storage:
docker info | grep "Storage Driver" # Should show containerd or overlay2 with containerd
-
Registry proxy is enabled by default
-
Enable containerd storage:
- See: https://docs.docker.com/engine/storage/containerd/
- Restart Docker after enabling
-
Verify containerd socket:
ls -la /var/run/docker/containerd/containerd.sock
-
Check logs:
docker exec vcluster.cp.my-cluster journalctl -u vcluster --nopager | grep -i registry
Symptoms:
vcluster pausefails- Cluster doesn't stop
Solutions:
-
Check cluster status:
vcluster list docker ps | grep vcluster -
Manually stop containers:
docker stop vcluster-my-cluster docker stop vcluster-node-my-cluster-* -
Check for stuck processes:
docker ps -a | grep vcluster
Symptoms:
vcluster resumefails- Cluster doesn't start
Solutions:
-
Check container status:
docker ps -a | grep vcluster -
Manually start containers:
docker start vcluster-my-cluster docker start vcluster-node-my-cluster-* -
Check Docker resources:
docker system df
-
View container logs:
docker exec vcluster.cp.my-cluster journalctl -u vcluster --nopager
Symptoms:
- Pods cannot communicate
- Services unreachable
- DNS resolution fails
Solutions:
-
Check network configuration:
docker network inspect vcluster-my-cluster
-
Verify CNI is working:
kubectl get pods -n kube-system | grep cni -
Check pod networking:
kubectl get pods -o wide kubectl describe pod <pod-name>
-
Test DNS:
kubectl run -it --rm debug --image=busybox -- nslookup kubernetes.default
Symptoms:
- Cannot resolve service names
- DNS queries fail
Solutions:
-
Check CoreDNS:
kubectl get pods -n kube-system | grep coredns kubectl logs -n kube-system <coredns-pod>
-
Verify DNS service:
kubectl get svc -n kube-system kube-dns
-
Check DNS config:
kubectl get configmap -n kube-system coredns -o yaml
Symptoms:
- Join command fails
- Node doesn't appear in cluster
Solutions:
-
EC2 connector script not executing directly: If the join script does not execute directly via
curl | bash, download the script first and then run it withsudo:# Download the script first curl -L -o join-script.sh "<join-script-url>" chmod +x join-script.sh sudo ./join-script.sh
-
Verify VPN is enabled:
vcluster describe my-cluster | grep -i vpn -
Check join token:
# Get valid join token kubectl get secret join-token -o jsonpath='{.data.token}' | base64 -d
-
Verify network connectivity:
# From external node ping <control-plane-ip> curl -k https://<control-plane-ip>:8443
-
Check platform URL:
# Ensure platform is accessible curl https://<platform-url>/health
-
View join logs:
# On external node journalctl -u vcluster-join
Symptoms:
- Commands take long time
- High CPU/memory usage
Solutions:
-
Check resource usage:
docker stats
-
Pause unused clusters:
vcluster list vcluster pause unused-cluster
-
Clean up Docker:
docker system prune -a
-
Increase Docker resources:
- Docker Desktop: Settings → Resources
Symptoms:
- System running out of memory
- Docker containers killed
Solutions:
-
Check memory usage:
docker stats
-
Limit cluster resources:
experimental: docker: args: - "--memory=2g" - "--cpus=2"
-
Pause unused clusters:
vcluster pause my-cluster
Enable debug logging:
vcluster create my-cluster --debug# Control plane logs
docker exec vcluster.cp.my-cluster journalctl -u vcluster --nopager
# Node logs (for node named worker-1)
docker exec vcluster.node.my-cluster.worker-1 journalctl -u kubelet --nopager
# or for containerd
docker exec vcluster.node.my-cluster.worker-1 journalctl -u containerd --nopagerWhen reporting issues, collect:
-
vCluster version:
vcluster version
-
Docker version:
docker version
-
System info:
uname -a docker info
-
Cluster status:
vcluster list vcluster describe my-cluster
-
Logs:
docker exec vcluster.cp.my-cluster journalctl -u vcluster --nopager > vcluster.log