2022-05-05 14:35:05 +08:00
|
|
|
|
|
|
|
|
|
# 平台基础架构
|
|
|
|
|
|
2022-05-10 11:52:23 +08:00
|
|
|
|
![image](https://user-images.githubusercontent.com/20157705/167534673-322f4784-e240-451e-875e-ada57f121418.png)
|
2022-05-05 14:35:05 +08:00
|
|
|
|
|
|
|
|
|
完整的平台包含
|
|
|
|
|
- 1、机器的标准化
|
|
|
|
|
- 2、分布式存储(单机可忽略)、k8s集群、监控体系(prometheus/efk/zipkin)
|
2022-10-10 14:26:22 +08:00
|
|
|
|
- 3、基础能力(tf/pytorch/mxnet/valcano/ray等分布式,nni/ray超参搜索)
|
2022-05-05 14:35:05 +08:00
|
|
|
|
- 4、平台web部分(oa/权限/项目组、在线构建镜像、在线开发、pipeline拖拉拽、超参搜索、推理服务管理等)
|
|
|
|
|
|
2022-05-18 20:40:26 +08:00
|
|
|
|
# 组件说明
|
|
|
|
|
|
|
|
|
|
| 命名空间 | 组件名 | 组件说明 |
|
|
|
|
|
| :-----| :---- | :---- |
|
|
|
|
|
| infra | kubeflow-dashboard | cube-studio平台的web前后端 |
|
|
|
|
|
| infra | kubeflow-dashboard-init | cube-studio平台初始化任务,用来创建数据库,初始化表和记录 |
|
|
|
|
|
| infra | kubeflow-dashboard-schedule | 用来调度cube-studio系统自带的调度任务,比如定时清理 |
|
|
|
|
|
| infra | kubeflow-dashboard-worker | 用来执行cube-studio系统自带的调度任务,比如定时清理 |
|
|
|
|
|
| infra | kubeflow-watch | 用来监控cube-studio平台中的任务,发起通知和信息更新 |
|
|
|
|
|
| infra | mysql | 平台元数据的存储 |
|
|
|
|
|
| infra | redis | 平台缓存,和异步任务对接 |
|
|
|
|
|
| kube-system | kubernetes-dashboard-cluster | k8s中pod的管理界面 |
|
|
|
|
|
| kube-system | dashboard-cluster-metrics-scraper | k8s中pod的管理界面上的pod资源使用情况的插件 |
|
|
|
|
|
| kube-system | nvidia-device-plugin-daemonset | k8s中使用机器gpu驱动和设备的插件 |
|
|
|
|
|
| kube-system | kube-batch | 批调度插件,在同时调度多个pod时必须要同时满足所有pod资源需求才进行调度的组件 |
|
|
|
|
|
| kube-system | metrics-server | 集群资源使用情况的指标采集,用来在hpa时使用 |
|
|
|
|
|
| kube-system | kubeflow-prometheus-adapter | 用来将prometheus采集的指标转化为可以用来控制hpa的指标 |
|
|
|
|
|
| kubeflow | frameworkcontroller | nni超参搜索需要的分布式组件 |
|
|
|
|
|
| kubeflow | metadata-* 和 ml-pipeline-* | pipeline跟踪调试组件 |
|
|
|
|
|
| kubeflow | minio | 对象存储 |
|
|
|
|
|
| kubeflow | mpi-operator | mpi分布式训练 |
|
|
|
|
|
| kubeflow | mxnet-operator | mxnet分布式训练 |
|
|
|
|
|
| kubeflow | pytorch-operator | pytorch分布式训练 |
|
|
|
|
|
| kubeflow | tf-job-operator | tf分布式训练 |
|
|
|
|
|
| kubeflow | workflow-controller | argo 云原生调度 |
|
|
|
|
|
| istio-system | istio-ingressgateway | 入口网关,用来代理所有外部访问 |
|
|
|
|
|
| istio-system | cluster-local-gateway | 入口网关,用来代理所有内部访问 |
|
|
|
|
|
| istio-system | 其他 | istio基础组件 |
|
|
|
|
|
| monitoring | dcgm-exporter | gpu机器资源监控 |
|
|
|
|
|
| monitoring | node-exporter | cpu机器资源监控 |
|
|
|
|
|
| monitoring | prometheus-k8s | 监控数据存储服务 |
|
|
|
|
|
| monitoring | grafana | 监控数据可视化 |
|
|
|
|
|
| volcano-system | 全部 | volcano分布式和批调度 |
|
|
|
|
|
| jupyter | docker-* | 用户创建的在线构建镜像的pod |
|
|
|
|
|
| jupyter | 其他 | 用户创建的在线notebook |
|
|
|
|
|
| service | 全部 | 用户创建的内部服务和推理服务 |
|
|
|
|
|
| pipeline | 全部 | 用户创建的pipeline任务 |
|
|
|
|
|
|
2022-05-05 14:35:05 +08:00
|
|
|
|
|
|
|
|
|
# 平台部署流程
|
|
|
|
|
|
|
|
|
|
基础环境依赖
|
|
|
|
|
- docker >= 19.03
|
|
|
|
|
- kubernetes = 1.18
|
|
|
|
|
- kubectl >=1.18
|
2022-05-10 11:52:23 +08:00
|
|
|
|
- cfs/ceph 挂载到每台机器的 /data/k8s/
|
2022-09-30 18:42:41 +08:00
|
|
|
|
- 单机 磁盘>=200G 单机磁盘容量要求不大,仅做镜像容器的存储
|
2022-05-10 11:52:23 +08:00
|
|
|
|
- 控制端机器 cpu>=16 mem>=32G
|
2022-05-05 14:35:05 +08:00
|
|
|
|
- 任务端机器,根据需要自行配置
|
|
|
|
|
|
|
|
|
|
本平台依赖k8s/kubeflow/prometheus/efk相关组件,请参考install/kubenetes/README.md 部署依赖组件。
|
|
|
|
|
|
|
|
|
|
平台完成部署之后如下:
|
|
|
|
|
|
2022-05-13 13:08:12 +08:00
|
|
|
|
<img width="100%" alt="167874734-5b1629e0-c3bb-41b0-871d-ffa43d914066" src="https://user-images.githubusercontent.com/20157705/168214806-b8aceb3d-e1b4-48f0-a079-903ef8751f40.png">
|
2022-05-05 14:35:05 +08:00
|
|
|
|
|
|
|
|
|
|
2022-05-10 11:52:23 +08:00
|
|
|
|
# 本地开发
|
2022-05-05 14:35:05 +08:00
|
|
|
|
|
2022-05-10 11:52:23 +08:00
|
|
|
|
管理平台web端可连接多个k8s集群用来在k8s集群上调度发起任务实例。同时管理多个k8s集群时,或本地调试时,可以将k8s集群的config文件存储在kubeconfig目录中,按照$ENVIRONMENT-kubeconfig 的规范命名
|
2022-05-05 14:35:05 +08:00
|
|
|
|
|
2022-05-10 11:52:23 +08:00
|
|
|
|
./docker 目录包含本地开发方案,涉及镜像构建,docker-compose启动,前端构建,后端编码等过程
|
2022-05-05 14:35:05 +08:00
|
|
|
|
|
|
|
|
|
参考install/docker/README.md
|
|
|
|
|
|