Dashboard
部署 Dashboard UI
Dashboard 是Kubernetes 的可视化管理Web界面, k8s集群默认情况下不会部署 Dashboard。可以通过以下命令部署
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
也可以先把recommended.yaml下载下来, 然后执行
kubectl apply -f recommended.yaml
安装完成后,使用命令查看pod是否创建成功
$ kubectl get pod -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-79c5968bdc-nbtx9 1/1 Running 1 16h
kubernetes-dashboard-6f65cb5c64-kdh4c 1/1 Running 1 16h
获取令牌(Token)
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
然后通过浏览器访问主机ip+port, 输出令牌即可访问, 默认是最小权限,因此很多均不能操作和查看。
我这里地址为 : https://192.168.101.172:30425/
浏览器会提示不安全,是因为我们没有配置证书,选择“继续”, 然后输出获取的令牌,即可登录。
创建Service Account
创建Service Account 及 ClusterRoleBinding
$ kubectl apply -f dash-admin-user.yaml
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
然后重新通过浏览器登录,输入Token, 即可查看k8s集群的状态。
技术架构
Kubernetes Dashboard 项目包含两个主要组件。他们在这里被称为前端和后端。
前端是在浏览器中运行的单页Web应用程序。它获取所有使用标准HTTP方法从后端获取业务数据。它没有实现业务逻辑, 它仅显示获取的数据,并将请求发送到后端以执行操作。
后端作为Kubernetes服务在Kubernetes集群中运行。或者,它可以在任何地方运行可以连接到主节点, 则在群集外部。后端是一个HTTP服务器,将数据请求代理到适当的远程后端(例如Kubernetes API)或实现 商业逻辑。当远程后端API不存在时,后端实现业务逻辑直接支持所需的用例,例如, “获得具有其CPU使用率指标的Pod列表岁时间线”。下图概述了该项目的体系结构:
具有实现业务逻辑的后端的基本原理:
表示层(前端)和业务逻辑层(后端)之间的清晰分隔。这是因为每个动作都经过定义明确的API。
事务操作在后端比在前端更容易实现。示例这样的操作:“为它创建复制控制器和服务”或“进行滚动更新”。
现有工具(例如“ kubectl”)中可能的代码重用以及对工具的上游贡献。
速度:在后端上从后端获取复合数据的速度更快(如果它运行在后端附近)数据源)。 例如,获取Pod列表及其CPU使用率时间表至少需要两个请求。在后端进行操作会缩短RTT。
后端
用[Golang](https://golang.org/)编写。
代码和测试存储在src/app/backend目录中。测试文件名与源文件开头相同,但以_test.go`开头。
每个API调用都会到达 apihandler.go,该apihandler.go实现了一系列处理程序函数,以将结果传递给特定于资源的处理程序。
后端当前未实现缓存,因此对Dashboard API的调用将始终对Kubernetes API服务器进行全新的调用。
前端
用[TypeScript](https://www.typescriptlang.org/)编写。
将[Angular](https://angular.io/)和[Angular Material](https://material.angular.io/)一起用于卡片,按钮等组件。
使用[Google Closure编译器](https://developers.google.com/closure/compiler/)。
代码和测试存储在 src/app/frontend目录中。测试文件的名称与源文件的开头相同,但它们以` .spec.ts`开头。
前端调用API并呈现接收到的数据。它还可以转换客户端上的某些数据,并为用户提供可视化效果。 前端还调用API服务器,以直接从仪表板将exec执行到容器中。
代码分析
后端代码在 dashboardsrcappbackend 目录下