# 平台基础架构 ![image](https://user-images.githubusercontent.com/20157705/167534673-322f4784-e240-451e-875e-ada57f121418.png) 完整的平台包含 - 1、机器的标准化 - 2、分布式存储(单机可忽略)、k8s集群、监控体系(prometheus/efk/zipkin) - 3、基础能力(tf/pytorch/mxnet/valcano/ray等分布式,nni/ray超参搜索) - 4、平台web部分(oa/权限/项目组、在线构建镜像、在线开发、pipeline拖拉拽、超参搜索、推理服务管理等) # 组件说明 | 命名空间 | 组件名 | 组件说明 | | :-----| :---- | :---- | | 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任务 | # 平台部署流程 基础环境依赖 - docker >= 19.03 - kubernetes = 1.18 - kubectl >=1.18 - cfs/ceph 挂载到每台机器的 /data/k8s/ - 单机 磁盘>=200G 单机磁盘容量要求不大,仅做镜像容器的存储 - 控制端机器 cpu>=16 mem>=32G - 任务端机器,根据需要自行配置 本平台依赖k8s/kubeflow/prometheus/efk相关组件,请参考install/kubenetes/README.md 部署依赖组件。 平台完成部署之后如下: 167874734-5b1629e0-c3bb-41b0-871d-ffa43d914066 # 本地开发 管理平台web端可连接多个k8s集群用来在k8s集群上调度发起任务实例。同时管理多个k8s集群时,或本地调试时,可以将k8s集群的config文件存储在kubeconfig目录中,按照$ENVIRONMENT-kubeconfig 的规范命名 ./docker 目录包含本地开发方案,涉及镜像构建,docker-compose启动,前端构建,后端编码等过程 参考install/docker/README.md