<p>I did K8s(1.11) cluster using kubeadm tool. It 1 master and one node in the cluster. </p>

<ol>
<li><p>I applied dashboard UI there. 
kubectl create -f <a href="https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml" rel="noreferrer">https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml</a></p></li>
<li><p>Created service account (followed this link: <a href="https://github.com/kubernetes/dashboard/wiki/Creating-sample-user" rel="noreferrer">https://github.com/kubernetes/dashboard/wiki/Creating-sample-user</a>)</p></li>
</ol>

<blockquote>
<pre><code>apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system
</code></pre>
</blockquote>

<p>and </p>

<pre><code>apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
</code></pre>

<p>Start kube proxy: <code>kubectl proxy --address 0.0.0.0 --accept-hosts '.*'</code> </p>

<p>And access dashboard from remote host using this URL: <code>http://&lt;k8s master node IP&gt;:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login</code></p>

<p>Its asking for token for login: got token using this command: <code>kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')</code> </p>

<p>After copy and apply the token in browser.. its not logging in. Its not showing authentication error too… Not sure wht is wrong with this? Is my token wrong or my kube proxy command wrong?  </p>

Tushar De
<p>I recreated all the steps in accordance to what you've posted.</p>

<p>Turns out the issue is in the <code>&lt;k8s master node IP&gt;</code>, you should use localhost in this case. So to access the proper dashboard, you have to use:</p>

<p><a href="http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login" rel="noreferrer">http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login</a></p>

<p>When you start kubectl proxy - you create a tunnel to your apiserver on the master node. By default, Dashboard is starting with ServiceType: ClusterIP. The Port on the master node in this mode is not open, and that is the reason you can't reach it on the 'master node IP'. If you would like to use master node IP, you have to change the ServiceType to NodePort.</p>

<p>You have to delete the old service and update the config by changing service type to NodePort as in the example below (note that ClusterIP is not there because it is assumed by default).</p>

<p>Create a new yaml file name newservice.yaml</p>

<pre><code>---
# ------------------- Dashboard Service ------------------- #

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
</code></pre>

<p>Delete the old service</p>

<pre><code> kubectl delete service kubernetes-dashboard -n kube-system
</code></pre>

<p>Apply the new service</p>

<pre><code>kubectl apply -f newservice.yaml
</code></pre>

<p>Run describe service</p>

<pre><code>kubectl describe svc kubernetes-dashboard -n kube-system | grep "NodePort"
</code></pre>

<p>and you can use that port with the IP address of the master node</p>

<pre><code>Type:                   NodePort
NodePort:           &lt;unset&gt; 30518/TCP

http://&lt;k8s master node IP&gt;:30518/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
</code></pre>

<p>Note that the port number is generated randomly and yours will be probably different. </p>
