替换基础组件
适用于企业已自建了 istio / prometheus / minio(S3) / mysql / redis / postgresql / kubernetes-dashboard 等基础设施,希望 CubeStudio 直接复用而不是再部署一套的场景。 组件级的配置项(变量含义、默认值)参见 04-运维管理/配置文件管理.md。
使用自有 istio
开源版本中使用 istio 1.15.0,可以在 install/kubernetes/start.sh 里注释掉"部署istio"段(约 install/kubernetes/start.sh:114-121,含 kubectl apply -f istio/install-1.15.0.yaml)来跳过 istio 部署。
注意事项:
1、istio 作为平台的统一入口,需要暴露 IP,并开放 80、8080 端口,会代理 CubeStudio 的 web 界面、notebook、pipeline、nni、内部服务、推理服务、监控服务。
2、配置 istio 的监控指标对接到 prometheus,并且默认不启动 sidecar,通过 label 启动自动注入,同时流量的复制、分流、域名代理等功能可用。
istio 在平台中的角色与流量代理细节,见 01-架构原理/流量代理与网关.md。
兼容自有 prometheus 和 node-exporter
如果原本已经使用 prometheus-operator 部署了 prometheus,可以基于原有的 prometheus-operator 继续创建 CubeStudio 所需 prometheus,但 node-exporter 无法重复创建。
可以先修改 install/kubernetes/prometheus/node-exporter/node-exporter-sm.yml,其中的 namespaceSelector 中的命名空间,改为你已经部署了的 node-exporter 的命名空间。
然后再更新这个部署文件:
kubectl apply -f node-exporter-sm.yml
使用自有的 prometheus
CubeStudio 对 prometheus 生态需求部分(不需要下面的需求可以不使用 prometheus):
- pipeline 编排界面查看任务的资源使用 grafana 看板(需要配置 pod 的资源使用情况)
- 整体资源界面有机器的、pod 的、gpu 的 grafana 资源采集看板,和 pod 的资源利用率(需要配置机器的、pod 的、gpu 的资源使用情况)
- 推理服务界面查看 istio 服务的吞吐和使用 grafana 看板(需要配置 istio 的指标采集)
- 推理服务可以配置 metric 接口(需要 prometheus 支持通过 annotations 自动发现被注册的服务入口点)
- 推理服务可以配置 gpu 弹性伸缩(需要配置 prometheus_adapter 组件,将 prometheus 指标转化为弹性伸缩自定义指标)
- pod 资源、node 资源、服务负载的 grafana 看板需要能接收变量,变量参考现有 CubeStudio 的 grafana 看板
修改方法:
- 注释掉
start.sh平台"部署 prometheus"部分,可以将 CubeStudio 中的 grafana 看板部署到目标 grafana 组件上。 - 将
config.py中的PROMETHEUS变量更改为目标 prometheus 服务地址(默认prometheus-k8s.monitoring:9090,见myapp/config.py:808)。 - 将
config.py中的GRAFANA_TASK_PATH、GRAFANA_SERVICE_PATH、GRAFANA_CLUSTER_PATH、GRAFANA_NODE_PATH、GRAFANA_GPU_PATH修改为对应的 grafana 看板地址(见myapp/config.py:1364-1372)。 - 将
config.py中的ALL_LINKS中 grafana 的地址修改为真实的地址(见myapp/config.py:955)。
监控生态的整体部署与看板说明见 04-运维管理/监控部署与看板.md;架构层面见 01-架构原理/监控体系/README.md。
使用自有 kubernetes-dashboard
在 config.py 文件中替换 K8S_DASHBOARD_CLUSTER 变量(默认 /k8s/dashboard/cluster/,见 myapp/config.py:817)。
minio 替换
kubeflow 命名空间,workflow-controller-configmap 的 configmap,修改 s3:endpoint 为自己的 S3 服务地址,再重启 workflow 的 pod(该 configmap 定义见 install/kubernetes/argo/workflow.yaml,artifactRepository 中的 s3.endpoint 默认指向 minio:9000)。
在 config.py 文件中替换 MINIO_HOST 变量(默认 minio.kubeflow:9000,见 myapp/config.py:1302)。
redis 替换
替换 infra 命名空间 kubeflow-dashboard-* 的 deployment 的环境变量。
如需对接哨兵模式的 Redis,见 04-运维管理/Redis哨兵部署.md。
mysql 替换
替换 infra 命名空间 kubeflow-dashboard-* 的 deployment 的环境变量。
元数据库(MySQL/PostgreSQL/达梦)配置见 04-运维管理/元数据库配置.md。
postgresql 替换
替换 kubeflow 命名空间 labelstudio 的 deployment 的环境变量。
替换镜像名
把平台默认的公共镜像(
ccr.ccs.tencentyun.com/cube-studio/...)换成自己私有仓库的镜像。私有仓库搭建见 04-运维管理/私有镜像仓库Harbor.md。
基础组件镜像
install/kubernetes 中部署的组件,可替换为源镜像名的新 tag。
业务镜像
模板镜像:需要在 myapp/init/init-job-template.json 中的 image_name。
notebook 镜像:config.py 中的 NOTEBOOK_IMAGES 变量配置(见 myapp/config.py:998)。
超参搜索镜像:config.py 中 NNI_IMAGES、WAIT_POD_IMAGES 变量(见 myapp/config.py:1298、1300),myapp/init/init-automl.json 中的 job_worker_image。
内部服务镜像:
myapp/init/init-service.json中image_name
推理服务镜像:
config.py中的INFERNENCE_IMAGES字典(含ml-server、tfserving、torch-server、triton-server、vllm、ollama、mindie、triton-llm等键,见myapp/config.py:1324起)myapp/init/init-inference.json中image_name
gpu 镜像:
myapp/init/init-job-template.json中ccr.ccs.tencentyun.com/cube-studio开头的镜像
镜像管理:修改 myapp/init/init-image.json 中 name。
aihub 镜像:myapp/init/init-aihub.json 中的 images。
业务代码中镜像
搜索替换 myapp/views/ 下 ccr.ccs.tencentyun.com/cube-studio 开头的镜像,替换为自己的镜像,重新打包后台镜像。