Accessing kubernetes dashboard gives Error trying to reach service 'dial tcp 10.44.0.28443 connect connection refused'
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
The error "dial tcp 10.44.0.2:8443: connect: connection refused" when accessing the Kubernetes dashboard means the API server cannot reach the dashboard pod on port 8443. The IP 10.44.0.2 is the dashboard pod's ClusterIP, and 8443 is its HTTPS port. "Connection refused" indicates the dashboard pod is either not running, crashed, listening on a different port, or blocked by a network policy. The fix depends on which of these is the cause.
The Error
This error appears in the browser when you access the dashboard URL through kubectl proxy or a NodePort/LoadBalancer service. The Kubernetes API server is proxying the request to the dashboard service, but the backend pod rejects the TCP connection.
Step 1: Check if the Dashboard Pod Is Running
Expected output:
If the STATUS is CrashLoopBackOff, Error, or Pending, the dashboard is not running. Check the logs:
Common log errors:
- Certificate issues: dashboard cannot find or load its TLS certificate
- Permission denied: RBAC prevents the dashboard from accessing the API
- Port already in use: another process is using port 8443
Step 2: Verify the Service Configuration
Check that the service port and target port match what the pod is listening on:
If Endpoints is <none>, the service cannot find any matching pods. This means the pod labels do not match the service selector, or no pods are running.
Step 3: Check Pod Labels Match Service Selector
The pod must have the label k8s-app=kubernetes-dashboard for the service to route traffic to it.
Step 4: Verify Network Connectivity
Test connectivity from within the cluster:
If this also fails with "connection refused," the dashboard pod is genuinely not listening. If it works from the debug pod but not from outside, the issue is with the proxy or network policy.
Step 5: Check kubectl proxy Configuration
The most common access method:
Common mistakes in the URL:
- Missing
https:prefix:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/kubernetes-dashboard:/proxy/fails because the service uses HTTPS - Wrong namespace: the dashboard may be in
kubernetes-dashboardorkube-systemdepending on installation method - Proxy not running: the proxy must remain running in a terminal session
Step 6: Reinstall the Dashboard
If the pod is in a crash loop or the configuration is broken, reinstall:
For Kubernetes Dashboard v3 (newer versions):
Step 7: Create a Service Account for Access
The dashboard often shows the error page because there is no valid authentication token:
Copy the token and paste it into the dashboard login page.
Alternative Access Methods
Common Pitfalls
- Wrong namespace: Older installations put the dashboard in
kube-system. Newer versions usekubernetes-dashboard. Check both:kubectl get pods -A | grep dashboard. - NetworkPolicy blocking traffic: If you have NetworkPolicies in the
kubernetes-dashboardnamespace, they may block ingress from the API server. Add a policy that allows traffic fromkube-systemor the API server CIDR. - Self-signed certificate warnings: The dashboard uses a self-signed TLS certificate by default. Browsers block this with
NET::ERR_CERT_AUTHORITY_INVALID. Accept the risk or install a valid certificate. - Dashboard version incompatible with cluster: Dashboard v2.x requires Kubernetes 1.21+. Dashboard v3.x requires Kubernetes 1.25+. An incompatible version crashes on startup. Check the compatibility matrix in the dashboard release notes.
- Minikube-specific access: On Minikube, use
minikube dashboardwhich handles proxy setup automatically. Manualkubectl proxymay not work correctly with Minikube's networking.
Summary
- "Connection refused" means the dashboard pod is not accepting connections on port 8443
- Check pod status first:
kubectl get pods -n kubernetes-dashboard - Verify the service has endpoints:
kubectl describe svc kubernetes-dashboard -n kubernetes-dashboard - Ensure pod labels match the service selector
- Use
kubectl port-forwardas a simpler alternative tokubectl proxy - Reinstall the dashboard if the pod is in a crash loop
- Create a service account and token for dashboard authentication
Related reading
- Accessing Kubernetes service on port 80
- Accessing Local Kafka from within Services deployed in Local Docker For Mac (incl. Kubernetes extension)
- Accessing Local Kafka from within Services deployed in Local Docker For Mac incl. Kubernetes extension
- Active-Passive Jenkins Setup in Kubernetes
- Accessing localhostport from Android emulator
- Accessing Maxmind Geo API in Hadoop using Distributed Cache
- Accidentally removed xcassets file from Xcode project
- Accuracy Score ValueError Can't Handle mix of binary and continuous target

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.