I've manually tried to verify the dashboard is available following the steps described with the kubernetes-calico bundle. As seen below a connection to the calico cidr IP assigned to the kubernetes-dashboard-7cf54d76b5-r8k8g pod times out. ubuntu@anorith:~$ kubectl proxy Starting to serve on 127.0.0.1:8001 ^Z [1]+ Stopped kubectl proxy ubuntu@anorith:~$ bg [1]+ kubectl proxy & ubuntu@anorith:~$ nc -nz 127.0.0.1 8001 ubuntu@anorith:~$ echo $? 0 ubuntu@anorith:~$ curl 'http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login' Error trying to reach service: 'dial tcp 172.16.1.199:8443: i/o timeout' ubuntu@anorith:~$ kubectl describe po -n kubernetes-dashboard Name: dashboard-metrics-scraper-cc4c766b4-5st8p Namespace: kubernetes-dashboard Priority: 0 Node: juju-cd5864-kubernetes-9/172.16.0.185 Start Time: Wed, 19 Feb 2020 20:46:50 +0000 Labels: k8s-app=dashboard-metrics-scraper pod-template-hash=cc4c766b4 Annotations: Status: Running IP: 172.16.1.201 IPs: IP: 172.16.1.201 Controlled By: ReplicaSet/dashboard-metrics-scraper-cc4c766b4 Containers: dashboard-metrics-scraper: Container ID: containerd://810e53b4beb6dc605bd9f52f3fb2e8281515db7cea1fb1400565cd8aecd44e7e Image: rocks.canonical.com:443/cdk/kubernetesui/metrics-scraper:v1.0.1 Image ID: rocks.canonical.com:443/cdk/kubernetesui/metrics-scraper@sha256:3b1cb436dbc2c02aabd7d29e3d9b3f8b4dfc1eb50dbcc63640213ef1139235dd Port: 8000/TCP Host Port: 0/TCP State: Running Started: Wed, 19 Feb 2020 20:48:31 +0000 Ready: True Restart Count: 0 Liveness: http-get http://:8000/ delay=30s timeout=30s period=10s #success=1 #failure=3 Environment: Mounts: /tmp from tmp-volume (rw) /var/run/secrets/kubernetes.io/serviceaccount from kubernetes-dashboard-token-qjphl (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: tmp-volume: Type: EmptyDir (a temporary directory that shares a pod's lifetime) Medium: SizeLimit: kubernetes-dashboard-token-qjphl: Type: Secret (a volume populated by a Secret) SecretName: kubernetes-dashboard-token-qjphl Optional: false QoS Class: BestEffort Node-Selectors: Tolerations: node-role.kubernetes.io/master:NoSchedule node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Name: kubernetes-dashboard-7cf54d76b5-r8k8g Namespace: kubernetes-dashboard Priority: 0 Node: juju-cd5864-kubernetes-9/172.16.0.185 Start Time: Wed, 19 Feb 2020 20:46:50 +0000 Labels: k8s-app=kubernetes-dashboard pod-template-hash=7cf54d76b5 Annotations: Status: Running IP: 172.16.1.199 IPs: IP: 172.16.1.199 Controlled By: ReplicaSet/kubernetes-dashboard-7cf54d76b5 Containers: kubernetes-dashboard: Container ID: containerd://86d925a8abeb96fc4e0164ee91d9275d800a38d1e746510861a3ce517c4c6c08 Image: rocks.canonical.com:443/cdk/kubernetesui/dashboard-amd64:v2.0.0-beta4 Image ID: rocks.canonical.com:443/cdk/kubernetesui/dashboard-amd64@sha256:1dc220ba89df386cf8696d53093fc324a12f918b82aefb8deca3974b0b179d04 Port: 8443/TCP Host Port: 0/TCP Args: --auto-generate-certificates --authentication-mode=basic --namespace=kubernetes-dashboard State: Running Started: Wed, 19 Feb 2020 20:48:10 +0000 Ready: True Restart Count: 0 Liveness: http-get https://:8443/ delay=30s timeout=30s period=10s #success=1 #failure=3 Environment: Mounts: /certs from kubernetes-dashboard-certs (rw) /tmp from tmp-volume (rw) /var/run/secrets/kubernetes.io/serviceaccount from kubernetes-dashboard-token-qjphl (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kubernetes-dashboard-certs: Type: Secret (a volume populated by a Secret) SecretName: kubernetes-dashboard-certs Optional: false tmp-volume: Type: EmptyDir (a temporary directory that shares a pod's lifetime) Medium: SizeLimit: kubernetes-dashboard-token-qjphl: Type: Secret (a volume populated by a Secret) SecretName: kubernetes-dashboard-token-qjphl Optional: false QoS Class: BestEffort Node-Selectors: Tolerations: node-role.kubernetes.io/master:NoSchedule node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: