mlops-clearml-helm-repo

使用 Helm 在 Kubernetes 集群上部署 ClearML Server

云就绪版本 (高级)

面向 AI 的自动化实验管理器和版本控制

GitHub license GitHub version PyPI status

简介

clearml-serverClearML 的后端服务基础设施。它允许多个用户协作管理他们的实验。默认情况下,ClearML 配置为使用 ClearML Demo Server,该服务器对所有人开放并定期重置。为了托管自己的服务器,您需要安装 clearml-server 并将 ClearML 指向它。

clearml-server 包含以下组件

使用此仓库将 clearml-server 添加到您的 Helm 中,然后使用 Helm 将 clearml-server 部署到 Kubernetes 集群上。

部署您自己的 Elasticsearch、Redis 和 MongoDB

ClearML Server 要求您拥有 Elasticsearch、Redis 和 MongoDB 服务。此 Helm chart 的默认模板包含用于 RedisMongoDBBitnami chart,以及用于 Elasticsearch 的官方 chart(目前仍处于 Beta 阶段)。您可以使用默认的,或者使用您自己的部署并在该 chart 的相应部分设置它们的名称和端口。为了使用您自己的部署,请确保在 values.yaml 中禁用现有的(例如,要禁用 elasticsearch,设置 elasticsearch.enabled = false)。

先决条件

  1. 一个 Kubernetes 集群
  2. 用于 pvc-apiserver.yamlpvc-fileserver.yamlpvc-agentservices.yaml 的持久卷。
  3. 用于 Elasticsearch、MongoDB 和 Redis 的持久卷(Redis 是可选的)。请参阅每个 chart 的相关信息
    • Elasticsearch
    • MongoDB
    • Redis 确保为每个 PV 定义以下值
    • Elasticsearch - 在 values.yaml 中设置 elasticsearch.persistence.enabled=true 并将 elasticsearch.volumeClaimTemplate.storageClassName 设置为您在 Elasticsearch PV 中使用的 storageClassName。
    • MongoDB - 为了为 MongoDB 定义持久卷,请在 values.yaml 中设置 mongodb.persistence.enabled=true 并将 mongodb.persistence.storageClass 设置为您在 MongoDB PV 中使用的 storageClassName。阅读 此处 获取更多详细信息。
    • Redis - 为了为 Redis 定义持久卷,请在 values.yaml 中设置 redis.master.persistence.enabled=true 并将 redis.master.persistence.storageClass 设置为您在 Redis PV 中使用的 storageClassName。阅读 此处 获取更多详细信息。
  4. kubectl 已安装并配置 (请参阅 Kubernetes 文档中的安装和设置 kubectl)
  5. helm 已安装 (请参阅 Helm 文档中的安装 Helm)

使用 Helm 在 Kubernetes 集群中部署 ClearML Server

  1. clearml-server 仓库添加到您的 Helm 中

     helm repo add unit8-mlops https://darts.ac.cn/mlops-clearml-helm-repo/
    
  2. 确认 clearml-server 仓库已添加到 Helm 中

     helm search repo unit8-mlops
    

    helm 搜索结果必须包含 unit8-mlops/mlops-clearml-server

  3. 在您的集群上安装 unit8-mlops/mlops-clearml-server

     helm install clearml-server unit8-mlops/mlops-clearml-server --namespace=default --values=values.yaml
    

    clearml-server 被部署在默认命名空间中。

使用 Helm 更新 ClearML Server 应用程序

  1. 如果您正在从 ClearML Server Helm chart 的单节点版本升级,请先执行以下步骤

    1. 登录到之前标记为 app=trains 的节点
    2. 将 /opt/clearml/data 下的每个文件夹复制到其持久卷中。
    3. 按照部署 ClearML Server 的说明来部署 ClearML
  2. 使用新的或更新的 values.yaml 进行更新

     helm upgrade clearml-server unit8-mlops/mlops-clearml-server -f values.yaml
    
  3. 如果没有破坏性更改,您可以更新您的部署以匹配仓库版本

     helm upgrade clearml-server unit8-mlops/mlops-clearml-server
    

    重要提示:

    • 如果您之前部署过 clearml-server,您可能会遇到错误。如果是这样,您必须先使用以下命令删除旧的部署

        helm delete --purge clearml-server
      

      运行 helm delete 命令后,您可以运行 helm install 命令。

端口映射

clearml-server 部署后,服务会暴露以下节点端口

访问 ClearML Server

通过创建负载均衡器和域名,并创建指向该负载均衡器的记录来访问 clearml-server

设置好负载均衡器和域名后,请执行以下步骤来配置在您的 k8s 集群上访问 clearml-server

  1. 创建域名记录

    • 使用以下规则创建 3 条用于 Web 应用程序、文件服务器和 API 访问的记录
      • app.<您的域名>
      • files.<您的域名>
      • api.<您的域名>

      (例如,app.clearml.mydomainname.comfiles.clearml.mydomainname.comapi.clearml.mydomainname.com)

  2. 将您创建的记录指向该负载均衡器
  3. 配置负载均衡器以重定向来自您创建的记录的流量
    • app.<您的域名> 应重定向到 k8s 集群节点上的端口 30080
    • files.<您的域名> 应重定向到 k8s 集群节点上的端口 30081
    • api.<您的域名> 应重定向到 k8s 集群节点上的端口 30008

ClearML Server 的附加配置

您还可以配置 clearml-server 以实现

有关详细说明,请参阅 clearml-server 仓库 README 文件中的可选配置章节。