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执行到容器中。 代码分析 `````````````` 后端代码在 dashboard\src\app\backend 目录下 参考链接 ----------- * https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard * http://openwrt.bjbook.net/source/xref/kubernetes/dashboard-2.0.5/docs/developer/architecture.md