1.下载yaml文件
[root@k8s-master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
- 将名称空间修改为默认system
[root@k8s-master ~]# sed -i '/namespace/ s/kubernetes-dashboard/kube-system/g' recommended.yaml
2.下载镜像
grep "image:" recommended.yaml #查看使用的镜像

- 由于yaml配置文件中指定的镜像,所有节点都拉取指定版本镜像
[root@k8s-master ~]# docker pull kubernetesui/dashboard:v2.4.0
[root@k8s-master ~]# docker pull kubernetesui/metrics-scraper:v1.0.7
3.修改yaml文件
- NodePort方式:为了便于本地访问,修改yaml文件,将service改为NodePort 类型。
[root@k8s-master ~]# vim recommended.yaml
...
30 ---
31
32 kind: Service
33 apiVersion: v1
34 metadata:
35 labels:
36 k8s-app: kubernetes-dashboard
37 name: kubernetes-dashboard
38 namespace: kube-system
39 spec:
40 type: NodePort #增加type: NodePort
41 ports:
42 - port: 443
43 targetPort: 8443
44 nodePort: 31260 #增加nodePort: 31260,可根据实际情况调整
45 selector:
46 k8s-app: kubernetes-dashboard
47
48 ---

4.创建应用
[root@k8s-master ~]# kubectl apply -f recommended.yaml

- 查看Pod 的状态为running说明dashboard已经部署成功。
[root@master ~]# kubectl get pod --namespace=kube-system -o wide | grep dashboard

- Dashboard会在 kube-system namespace中创建自己的Deployment和 Service:

[root@k8s-master ~]# kubectl get service kubernetes-dashboard --namespace=kube-system

5.访问dashboard
- 查看service,TYPE类型已经变为NodePort,端口为31260
[root@k8s-master ~]# kubectl get service -n kube-system | grep dashboard

- 查看dashboard运行在那台机器上面
[root@kub-k8s-master ~]# kubectl get pods -n kube-system -o wide
- 通过浏览器访问:https://master:31260 , 如提示:“你的连接不是专用连接”无法访问,Google浏览器或者Edge浏览器空白处输入thisisunable回车即可

6.Dashboard通过token认证登录
- Dashboard 支持 Kubeconfig 和 Token 两种认证方式,这里选择Token认证方式登录。
6.1 创建在kube-system名称空间中创建serviceAccount
[root@k8s-master ~]# kubectl create serviceaccount dashboard-admin -n kube-system
[root@k8s-master ~]# kubectl describe sa/dashboard-admin -n kube-system

6.2 dashboard-admin 绑定 clusterbinding 的 sa
- 这样绑定后,serviceaccount 的 dashboard-admin 就有集群的管理员权限。
[root@k8s-master ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:\dashboard-admin
[root@k8s-master ~]# kubectl describe clusterrolebinding/dashboard-cluster-admin

6.3 获取 serviceaccount 的 dashboard-admin 的secret信息
- 在创建好serviceaccount的dashboard-admin后,会在kube-system名称空间下的secret中,自动创建一个以dashboard-admin-token开头的 secret
[root@k8s-master ~]# kubectl get secret -n kube-system

从上图已经查看到了,下面需要查看一下详细信息即可获取到token的值
[root@k8s-master ~]# kubectl describe secret/dashboard-admin-token-g7sdf -n kube-system

- 上面查看到的token 后面的一大串就是,把这一串复制到页面中就可以登录。登陆后界面如下:

原创文章,作者:jacky,如若转载,请注明出处:https://kubiyun.com/archives/378