-
Notifications
You must be signed in to change notification settings - Fork 673
基础组件介绍
完整的平台包含
- 1、机器的标准化
- 2、分布式存储(单机可忽略)、k8s集群、监控体系(prometheus/efk/zipkin)
- 3、基础能力(tf/pytorch/mxnet/valcano/ray等分布式,nni/katib超参搜索)
- 4、平台web部分(oa/权限/项目组、在线构建镜像、在线开发、pipeline拖拉拽、超参搜索、推理服务管理等)
命名空间 | 组件名 | 组件说明 |
---|---|---|
infra | kubeflow-dashboard-frontend | cube-studio平台的web前端 |
infra | kubeflow-dashboard | cube-studio平台的web后端 |
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 | gpu-manager-daemonset | k8s中使用机器gpu虚拟化驱动和设备的插件 |
kube-system | rdma-shared-dp-ds | k8s中使用机器rdma网络和设备的插件 |
kube-system | metrics-server | 集群资源使用情况的指标采集,用来在hpa时使用 |
kube-system | kubeflow-prometheus-adapter | 用来将prometheus采集的指标转化为可以用来控制hpa的指标 |
kubeflow | labelstudio | 标注平台 |
kubeflow | postgres | postgres数据库,labelstudio平台的元数据存储 |
kubeflow | spark-operator | spark serverless 分布式计算 |
kubeflow | train-operator | tf/pytorch/xgb/mxnet/mpi等分布式 |
kubeflow | workflow-controller | argo 云原生调度 |
kubeflow | minio | 对象存储 |
kubeflow | volcano-* | volcano分布式和批调度 |
istio-system | istio-ingressgateway | 入口网关,用来代理所有外部访问 |
istio-system | 其他 | istio基础组件 |
monitoring | dcgm-exporter | gpu机器资源监控 |
monitoring | node-exporter | cpu机器资源监控 |
monitoring | prometheus-k8s | 监控数据存储服务 |
monitoring | grafana | 监控数据可视化 |
jupyter | docker-* | 用户创建的在线构建镜像的pod |
jupyter | 其他 | 用户创建的在线notebook |
service | 全部 | 用户创建的内部服务和推理服务 |
pipeline | 全部 | 用户创建的pipeline任务 |
版本: mysql:8.0.32
功能:cube-studio的基础元数据存储
依赖关系:cube-studio自研pod依赖数据库,依赖pod为infra/kubeflow-dashboard-的pod,企业自己准备mysql/postgresql数据库,并不作为企业版交付,可自行配置mysql/postgresql地址。
配置位置:infra/kubeflow-dashboard- pod的环境变量,可以修改mysql的地址,默认为infra/mysql的service
注意:开发者需自主自主完成mysql的高可用和按日备份
版本:redis:6.2.12
功能:cube-studio的缓存数据存储,cube-studio异步任务的中间队列和异步任务的结果存储
依赖关系:cube-studio自研pod依赖redis数据库,依赖pod为infra/kubeflow-dashboard-的pod,企业可自己准备redis
配置位置:infra/kubeflow-dashboard- pod的环境变量,可以修改redis的地址,默认为infra/redis的service
注意:redis太低版本可能无法对应依赖的功能,建议按照依赖的版本准备redis
版本:kubernetes-dashboard:v2.6.1,metrics-scraper:v1.0.8
功能:cube-studio查看pod 日志,搜索pod,查看 service和node基础信息等。metrics-scraper组件作用是在k8s dashboard中能看到pod的资源使用情况
依赖关系:cube-studio自研pod依赖k8s dashboard, 依赖pod为infra/kubeflow-dashboard-*的pod
配置位置:infra/kubeflow-dashboard-config 的 configmap, 也就是cube-studio的config.py的配置文件。
注意:包含user1版本和cluster版本的k8s dashboard,可自行控制不同的用户权限,避免可能产生的问题
版本:nvidia-device-plugin v0.11.0, dcgm-exporter 3.1.7-3.1.4
功能:device-plugin 为 k8s中调度gpu机器的gpu设备。在cpu机器上不使用。 dcgm-exporter为gpu的监控
依赖关系:gpu机器初始化的必备条件。不通gpu厂商使用的插件和监控组件是不一样的,需要gpu厂商提供。
配置位置:infra/kubeflow-dashboard-config 的 configmap, 也就是cube-studio的配置文件。
注意:对于不同厂商的AI加速卡,需要不同的gpu插件,虚拟化插件,和监控插件
版本:1.15
功能:k8s中虚拟化方式调度gpu机器的gpu设备,目前支持英伟达gpu,在cpu机器上不使用。
依赖关系:虚拟化调用gpu的一种方式,也可以在驱动层面做虚拟化。不通gpu厂商使用的插件是不一样的,需要gpu厂商提供虚拟化方法。
配置位置:infra/kubeflow-dashboard-config 的 configmap, 也就是cube-studio的配置文件。
注意:该组件是cuda层面做虚拟化的一种方式,最好每次只新建一个pod。
版本:1.7.3
功能:标注平台
依赖关系:cube-studio中仅做跳转链接
配置位置:myapp/home.py中的菜单配置
注意:label studio标注平台,可以配置账号密码,以及账号密码的注册登录方式,可自行设置
版本:11.5
功能:标注平台的元数据存储
依赖关系:labelstudio依赖postgresql,cube-studio未直接依赖
配置位置:kubeflow/label-studio 的pod的环境变量有指定postgresql的地址
注意:
版本:1.3.8-3.1.1
功能:在k8s中快速部署一个由k8s作为调度器的spark集群
依赖关系:spark serverless 任务模板依赖这个operator来进行创建spark集群。如果不需要临时创建spark集群,可以不需要
配置位置:job-template/job/spark
注意:当前版本的spark-operator,没法传递挂载配置到spark分布式worker中,所以无法为spark worker挂载个人子目录
版本:v1-8a066f9
功能:tf/pytorch/xgb/mxnet/mpi等分布式训练
依赖关系:tf/pytorch/xgb/mxnet/mpi相关的分布式任务模板都依赖这个组件。cube-studio并没有直接依赖这个组件
配置位置:job-template/job/下tf、pytorch、mxnet、mpi等相关任务模板
注意:
版本:1.7.0
功能:volcano相关任务,nni超参搜索、deepspeed等分布式训练所依赖的底层分布式框架
依赖关系:volcano分布式任务,媒体分布式数据处理任务模板依赖这个组件,nni超参搜索也依赖这个组件进行分布式集群的部署。
配置位置:cube-studio代码里面使用vsjob的yaml来直接对接k8s集群。再由volcano来解析和运行
注意:多个地方使用,代码,模板任务等
版本:workflow 3.4.3 minio 2023-04-20T17-56-55Z
功能:pipeline的云原生调度
依赖关系:cube-studio使用workflow运行pipeline,workflow使用minio作为中间日志和数据的存储。cube-studio也有定时任务清理过期worker和清理过期minio中的文件
配置位置:cube-studio代码中直接创建workflow的yaml,并提交到控制的k8s集群,然后监听workflow的状态信息
注意:
版本:1.15.0
功能:ingressgateway服务流量代理, istiod为istio的控制面
依赖关系:所有的notebook都使用istio进行前缀代理,所有的nni超参搜索都使用istio做前缀代理,grafana/k8s-dashboard/cube-studio前后端/都使用istio-ingressgateway都使用istio做前缀处理,所有的推理服务和内部服务,都使用istio做前缀处理。推理服务的统计在primetheus,也是由istio ingressgateway来提供
配置位置:install/kubernetes/virtual.yaml配置了基础组件的代理,其他的在代码中直接对接virtual service的yaml
注意:全局的流量入口均在istio ingressgateway
版本:prometheus:2.27.1,node-exporter:v1.5.0,grafana:9.1.5
功能:监控的生态组件,在pipeline拖拉拽界面可以快速查看任务的资源使用情况,在推理服务界面,可以查看服务的负载界面和gpu的监控界面,在整体资源可以查看机器的监控和pod的监控,以及集群整体的使用情况
依赖:cube-studio只依赖grafana进行监控数据的显示,需要包含指定的几个页面。
配置位置:infra/kubeflow-dashboard-config 的 configmap, 也就是cube-studio的配置文件。
注意:如果是多k8s集群,注意每个集群的prometheus的存储数据不要用同一个目录