This post guides you through deploying the Kubernetes dashboard after Deploy Kubernetes Cluster.
Install Dashboard
Download and install Docker images
docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 docker image rmi mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
Download dashboard config file template
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
Edit dashboard config file add type: NodePort in Dashboard Service section
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
Install dashboard
kubectl create -f kubernetes-dashboard.yaml
Check dashboard running status
kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-86c58d9df4-fvzh6 1/1 Running 0 33m kube-system coredns-86c58d9df4-jcjgn 1/1 Running 0 33m kube-system etcd-k8s-master 1/1 Running 0 32m kube-system kube-apiserver-k8s-master 1/1 Running 0 32m kube-system kube-controller-manager-k8s-master 1/1 Running 0 32m kube-system kube-flannel-ds-amd64-fl8k6 1/1 Running 0 21m kube-system kube-flannel-ds-amd64-jjqbx 1/1 Running 0 25m kube-system kube-flannel-ds-amd64-sh79b 1/1 Running 0 21m kube-system kube-proxy-mlnkt 1/1 Running 0 33m kube-system kube-proxy-pf7fp 1/1 Running 0 21m kube-system kube-proxy-t54fr 1/1 Running 0 21m kube-system kube-scheduler-k8s-master 1/1 Running 0 32m kube-system kubernetes-dashboard-57df4db6b-kmxw9 1/1 Running 0 22s
Creating sample user, reference guide on GitHub
Create a config file dashboard-adminuser.yaml for Service Account and ClusterRoleBinding
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-admin
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard-admin
namespace: kube-system
Create user and role binding
kubectl apply -f dashboard-adminuser.yaml
Bearer Token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-admin-token | awk '{print $1}')
Name: kubernetes-dashboard-admin-token-ngv5v
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: kubernetes-dashboard-admin
kubernetes.io/service-account.uid: 0aec2ffb-1d77-11e9-a792-000c29e92d29
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbi10b2tlbi1uZ3Y1diIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjBhZWMyZmZiLTFkNzctMTFlOS1hNzkyLTAwMGMyOWU5MmQyOSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiJ9.AIk_OeA1zRQJpY2qFgFoXWhM8ketEFnzMI82Jj8AVama8ycIHnV8m7nssGg7hegjhSUhPzdVun95VNjiA0dcmCWwvH0IkAqYFOh3hahFIHCO2HjM8F7wNotRS1LVuf221EJOV5f5VXyLEFp78sm69dS607-1X695X9BxH4iOIPz0R2GANHggJwC57oflUR_r0sfomYPfw49JKVqhGVsLl37RTcU-lTlvN5d-tT-GLlJVpowHZR7PUx27iODpViHn0iB0OhXPLR-Wdd3SlfcrrtIhupOL-PPI6fxVQwUii94nr0bmFwj6lh_aJFD5t3dERJxiEltICg3jkEsMyZEIPQ
ca.crt: 1025 bytes
namespace: 11 bytes
Check dashboard listing port
kubectl get svc -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 39m kubernetes-dashboard NodePort 10.98.98.181 <none> 443:31896/TCP 6m51s
Visit the dashboard via https://172.16.3.136:31896

Choose Token, paste the authentication token output from the previous command into the Token field, and choose SIGN IN.
