概述

Kubernetes Dashboard 是 Kubernetes 集群的 Web UI,用于管理集群。

安装

GitHub 地址:Kubernetes Dashboard

  • 由于本次搭建的k8s集群版本是1.16.0,故需要使用2.0.0以上,但是截止本次搭建环境,2.0.0尚出于beta阶段,本次使用v2.0.0-beta5

下载配置文件

  1. wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml

修改配置如下

  1. # 省略部分代码...
  2. # ------------------- Dashboard Service ------------------- #
  3. kind: Service
  4. apiVersion: v1
  5. metadata:
  6. labels:
  7. k8s-app: kubernetes-dashboard
  8. name: kubernetes-dashboard
  9. namespace: kube-system
  10. spec:
  11. # 修改类型为 NodePort 访问
  12. type: NodePort
  13. ports:
  14. - port: 443
  15. targetPort: 8443
  16. # 设置端口号为 30001
  17. nodePort: 30001
  18. selector:
  19. k8s-app: kubernetes-dashboard
  20. kind: Service
  21. apiVersion: v1
  22. metadata:
  23. labels:
  24. k8s-app: kubernetes-dashboard
  25. name: kubernetes-dashboard
  26. namespace: kubernetes-dashboard
  27. spec:
  28. # 修改类型为 NodePort 访问
  29. type: NodePort
  30. ports:
  31. - port: 443
  32. targetPort: 8443
  33. # 设置端口号为 30001
  34. nodePort: 30001
  35. selector:
  36. k8s-app: kubernetes-dashboard

部署到集群

  1. # 部署
  2. kubectl create -f kubernetes-dashboard.yaml
  3. # 查看
  4. kubectl -n kubernetes-dashboard get pods
  5. kubectl -n kubernetes-dashboard get service kubernetes-dashboard
  6. kubectl -n kubernetes-dashboard describe service kubernetes-dashboard

访问

需要使用 NodeIP:30001 访问 Dashboard,因为证书原因除火狐浏览器外其它浏览器无法直接打开页面

Chrome 浏览器显示如下

kubernetes_dashboard_chrome_error_info.png

Firefox 浏览器显示如下

kubernetes_dashboard_firefox_error_info.png

点击 接受风险并继续 即可显示欢迎界面

kubernetes_dashboard_login_token.png

登录

  • 我们采用 Token 方式登录
  • 创建登录账号,创建一个名为 dashboard-adminuser.yaml 的配置文件
  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4. name: admin-user
  5. namespace: kubernetes-dashboard
  6. ---
  7. apiVersion: rbac.authorization.k8s.io/v1
  8. kind: ClusterRoleBinding
  9. metadata:
  10. name: admin-user
  11. roleRef:
  12. apiGroup: rbac.authorization.k8s.io
  13. kind: ClusterRole
  14. name: cluster-admin
  15. subjects:
  16. - kind: ServiceAccount
  17. name: admin-user
  18. namespace: kubernetes-dashboard
  1. kubectl create -f dashboard-adminuser.yaml
  • 打印 Token 信息
  1. kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
  2. # 输出如下
  3. Name: admin-user-token-rzpz5
  4. Namespace: kubernetes-dashboard
  5. Labels: <none>
  6. Annotations: kubernetes.io/service-account.name: admin-user
  7. kubernetes.io/service-account.uid: 9606b452-8adb-4381-9e3c-9816dc1b5cc5
  8. Type: kubernetes.io/service-account-token
  9. Data
  10. ====
  11. token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImFEUkkxc1VnNFFtUXFCOGRBcVVaSHp5bEpVMU9QV3cyMTROZm5rMjUtZjAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXJ6cHo1Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5NjA2YjQ1Mi04YWRiLTQzODEtOWUzYy05ODE2ZGMxYjVjYzUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.kPwQMd6-wNCYkFUacr63aG5zwKp2_76NuJusLMnoHzV9TkzlkuO8DLWhJDeGFxdb9zTbQ9A7I8vz_xS-xI0nHo4r5QJ60CzQOLQXmlSCq0dzaOvh8OZawc5OcVfmIj5Dv7fr1NcA6ihZQddGIabOvJk0sx8ZnWTBPJUaBj0KHRpw2zpqv7yc11QEVc4b1dqP1-wG3NStKPCZNkBz8RSFA1urEyyQKdnCBvrPCadMzHUp-FBr1xEdxH1lYW0okoyNHXXjNMmBANvoAqrZrBgGJRDnOMabQH4nw0I3_Wcb3OReEv6OrMhcQrDjVDETL_PgLet_f3JVeW0y5Hyt9dcsEA
  12. ca.crt: 1025 bytes
  13. namespace: 20 bytes
  • 将 Token 输入浏览器,成功登陆后效果如下kubernetes_dashboard_page_overview.png