Troubleshooting vCluster Standalone Control Plane Nodes
Bringing up a Kubernetes cluster can face challenges, so here are some troubleshooting tips to help get you started.
Check vCluster logs​
All vCluster logs are located in the control plane, view service logs using journalctl.
journalctl -u vcluster.service --since="2 minutes ago" -f
Common Issues​
Network connectivity​
Clients and worker nodes access the cluster API through the vCluster proxy on port 8443, not on port 6443. The Kubernetes API server only listens on 127.0.0.1:6443, so opening port 6443 isn't necessary.
If kubectl or a node join can't connect, confirm that port 8443 on the control plane node is open to your workstation and all worker nodes. To check the listening addresses on the control plane node, run:
sudo ss -tlnp | grep -E ':(6443|8443)\b'
In the output, expect 0.0.0.0:8443 or *:8443 for the vCluster proxy and 127.0.0.1:6443 for the API server. For the full list of ports, see Required ports.
The systemd service​
The vCluster service needs to be running at all times.
systemctl status vcluster.service
Node join failures​
Check that join tokens haven't expired and network connectivity exists between nodes.
When running the join node script, if a 400 status code is received, check the URL directly to see if an error message exists. Alternatively you can pipe the entire response to the terminal and print it:
curl -sSLk "https://<endpoint>/node/join?token=<token>" | { response=$(cat); echo "$response" | sh - 2>/dev/null || echo "Error: $response"; }
Resource constraints​
Ensure adequate CPU, memory, and disk space on nodes.
Unsupported configuration options​
Other vCluster feature limitations​
Certain vCluster features are automatically disabled or unavailable. If you include these options in your vcluster.yaml, they are ignored or might cause configuration errors.
The following features are not available:
sync.*- No resource syncing between tenant and control plane clustersintegrations.*- Integrations depend on syncing functionalitynetworking.replicateServices- Services are not replicated to hostcontrolPlane.coredns.embedded: true- Embedded CoreDNS conflicts with custom CNIcontrolPlane.distro.k8s.scheduler.enabled: false- Virtual scheduler cannot be disabledsleep.*- No ability to use auto sleep for workloads or control plane
# These configurations are NOT supported with private nodes
# Resource syncing between tenant and control plane clusters is disabled
sync:
toHost:
services:
enabled: false # Services cannot be synced to the control plane cluster
secrets:
enabled: false # Secrets cannot be synced to the control plane cluster
# All other sync options (pods, configmaps, etc.) are also disabled
# Platform integrations require syncing functionality
integrations:
metricsServer:
enabled: false # Metrics server integration not supported
# All other integrations are disabled due to sync dependency
controlPlane:
# DNS configuration limitations
coredns:
embedded: false # Embedded CoreDNS conflicts with custom CNI options
distro:
k8s:
# Virtual scheduler is required for workload placement
scheduler:
enabled: true # Always enabled (cannot be disabled)
# Host Path Mapper is not supported
hostPathMapper:
enabled: false
# Service replication (networking.replicateServices) and sleep mode
# (sleep.*) are also unavailable; see the list above.