本篇介绍2套kubernetes的WEB UI管理控制台
Kubernetes 官方Dashboard 部署
Kubernetes Dashboard 是 Kubernetes 的官方 Web UI。使用 Kubernetes Dashboard,您可以:
- 向 Kubernetes 集群部署容器化应用
- 诊断容器化应用的问题
- 管理集群的资源
- 查看集群上所运行的应用程序
- 创建、修改Kubernetes 上的资源(例如 Deployment、Job、DaemonSet等)
- 展示集群上发生的错误 例如:您可以伸缩一个 Deployment、执行滚动更新、重启一个 Pod 或部署一个新的应用程序
安装
- 访问https://github.com/kubernetes/dashboard/releases 获取最新的dashboard安装yaml文件。
-
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml
访问
Kubernetes Dashboard 当前,只支持使用 Bearer Token登录。由于 Kubernetes Dashboard 默认部署时,只配置了最低权限的 RBAC。因此,我们要创建一个名为 admin-user 的 ServiceAccount,再创建一个 ClusterRolebinding,将其绑定到 Kubernetes 集群中默认初始化的 cluster-admin 这个 ClusterRole。
- 创建 Service Account 和 ClusterRoleBinding 使用 kubeadm 安装集群时,默认创建了 ClusterRole cluster-admin。此时我们可以直接为刚才的 ServiceAccount 创建 ClusterRoleBinding。
1. vi auth.yaml
2.
3. apiVersion: v1
4. kind: ServiceAccount
5. metadata:
6. name: admin-user
7. namespace: kubernetes-dashboard
8. ---
9. apiVersion: rbac.authorization.k8s.io/v1
10. kind: ClusterRoleBinding
11. metadata:
12. name: admin-user
13. roleRef:
14. apiGroup: rbac.authorization.k8s.io
15. kind: ClusterRole
16. name: cluster-admin
17. subjects:
18. - kind: ServiceAccount
19. name: admin-user
20. namespace: kubernetes-dashboard
• 执行如下命令可创建 ServiceAccount 和 ClusterRoleBinding
21. kubectl apply -f auth.yaml
• 修改使用nodePort访问
22. #默认是使用的ClusterIP方式,外部无法访问dashboard,所以需要修改成NodePort的方式
23. vi svc.yaml
24. kind: Service
25. apiVersion: v1
26. metadata:
27. labels:
28. k8s-app: kubernetes-dashboard
29. name: kubernetes-dashboard
30. namespace: kubernetes-dashboard
31. spec:
32. type: NodePort
33. ports:
34. - port: 8443
35. nodePort: 32443
36. targetPort: 8443
37. selector:
38. k8s-app: kubernetes-dashboard
39. kubectl apply -f svc.yaml
• 获取Bearer Token
40. kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
• 登录
41. # 使用nodeip + nodeport访问,输入token登录。
42. https://192.168.190.11:32443
安装Kuboard
Kuboard 是基于一款基于 Kubernetes 的微服务管理面板。
- Kuboard 关注微服务参考架构的视角对界面进行组织,参考 Kuboard 简介
- Kuboard 中,不需要手工编写 YAML 文件,进一步降低 K8S 使用难度,提高便捷性
- Kuboard 可以导出整个微服务架构的部署信息,并在新的名称空间/集群导入配置信息
- Kuboard 的一个发展方向是,提供内建的 监控套件(目前的全局监控套件成熟度比较高)
1. vi Kuboard.yaml
2.
3. apiVersion: apps/v1
4. kind: Deployment
5. metadata:
6. name: kuboard
7. namespace: kube-system
8. annotations:
9. k8s.eip.work/displayName: kuboard
10. k8s.eip.work/ingress: "true"
11. k8s.eip.work/service: NodePort
12. k8s.eip.work/workload: kuboard
13. labels:
14. k8s.eip.work/layer: monitor
15. k8s.eip.work/name: kuboard
16. spec:
17. replicas: 1
18. selector:
19. matchLabels:
20. k8s.eip.work/layer: monitor
21. k8s.eip.work/name: kuboard
22. template:
23. metadata:
24. labels:
25. k8s.eip.work/layer: monitor
26. k8s.eip.work/name: kuboard
27. spec:
28. containers:
29. - name: kuboard
30. image: eipwork/kuboard:latest
31. imagePullPolicy: Always
32.
33. ---
34. apiVersion: v1
35. kind: Service
36. metadata:
37. name: kuboard
38. namespace: kube-system
39. spec:
40. type: NodePort
41. ports:
42. - name: http
43. port: 80
44. targetPort: 80
45. nodePort: 32567
46. selector:
47. k8s.eip.work/layer: monitor
48. k8s.eip.work/name: kuboard
49.
50. ---
51. apiVersion: v1
52. kind: ServiceAccount
53. metadata:
54. name: kuboard-user
55. namespace: kube-system
56.
57. ---
58. apiVersion: rbac.authorization.k8s.io/v1
59. kind: ClusterRoleBinding
60. metadata:
61. name: kuboard-user
62. roleRef:
63. apiGroup: rbac.authorization.k8s.io
64. kind: ClusterRole
65. name: cluster-admin
66. subjects:
67. - kind: ServiceAccount
68. name: kuboard-user
69. namespace: kube-system
70. kubectl apply -f Kuboard.yaml
获取token与访问
1. #此Token拥有 ClusterAdmin 的权限,可以执行所有操作
2. kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}')
3. # 使用nodeip + nodeport访问,输入token登录。
4. http://192.168.190.11:32567