序:

Dashboard它可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
image.png

一、部署Dashboard

1、执行yaml文件直接部署

  1. kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
  2. #可以采用gitlab上面的yaml文件
  3. kubectl apply -f https://gitlab.com/jaeck/kubernetes/-/raw/master/kubernetes-dashboard.yaml

2、查看dashboard运行状态,以deployment方式部署,运行2个pod及2个service:

  1. [root@k8smaster tmp]# kubectl -n kubernetes-dashboard get pods
  2. NAME READY STATUS RESTARTS AGE
  3. dashboard-metrics-scraper-7445d59dfd-dqm7t 1/1 Running 0 31m
  4. kubernetes-dashboard-7d8466d688-5cxv9 1/1 Running 0 31m
  5. [root@k8smaster tmp]# kubectl -n kubernetes-dashboard get svc
  6. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  7. dashboard-metrics-scraper ClusterIP 10.102.47.233 <none> 8000/TCP 45m
  8. kubernetes-dashboard NodePort 10.111.31.52 <none> 443:30443/TCP 45m

3、访问dashboard,需要配置NodePort端口

  1. kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard \
  2. -p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443}]}}'

4、查看暴露的service,已修改为nodeport类型:

  1. [root@k8smaster tmp]# kubectl -n kubernetes-dashboard get svc
  2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. dashboard-metrics-scraper ClusterIP 10.102.47.233 <none> 8000/TCP 45m
  4. kubernetes-dashboard NodePort 10.111.31.52 <none> 443:30443/TCP 45m

5、或者下载下来手动修改Service

  1. https://gitlab.com/jaeck/kubernetes/-/raw/master/kubernetes-dashboard.yaml

修改内容:

  1. ...
  2. ---
  3. kind: Service
  4. apiVersion: v1
  5. metadata:
  6. labels:
  7. k8s-app: kubernetes-dashboard
  8. name: kubernetes-dashboard
  9. namespace: kubernetes-dashboard
  10. spec:
  11. type: NodePort #新增
  12. ports:
  13. - port: 443
  14. targetPort: 8443
  15. nodePort: 30443 #新增
  16. selector:
  17. k8s-app: kubernetes-dashboard
  18. ---
  19. ...
  20. ##更新配置
  21. kubectl apply -f kubernetes-dashboard.yaml

6、登录dashboard(必须Firefox)
https://any_node_ip:30443
image.png
**

二、配置登录用户

1、创建dashboard-adminuser.yaml:

  1. cat > dashboard-adminuser.yaml << EOF
  2. apiVersion: v1
  3. kind: ServiceAccount
  4. metadata:
  5. name: admin-user
  6. namespace: kubernetes-dashboard
  7. ---
  8. apiVersion: rbac.authorization.k8s.io/v1
  9. kind: ClusterRoleBinding
  10. metadata:
  11. name: admin-user
  12. roleRef:
  13. apiGroup: rbac.authorization.k8s.io
  14. kind: ClusterRole
  15. name: cluster-admin
  16. subjects:
  17. - kind: ServiceAccount
  18. name: admin-user
  19. namespace: kubernetes-dashboard
  20. EOF

2、创建登录用户

  1. kubectl apply -f dashboard-adminuser.yaml

3、查看admin-user的token

  1. kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')