bitnamicharts/mlflow Docker 镜像
Bitnami MLflow Helm Chart用于在Kubernetes集群上部署MLflow,这是一个开源平台,用于管理机器学习全生命周期,包括实验跟踪、代码打包为可复现运行以及模型共享与部署。
Bitnami MLflow 软件包
MLflow 是一个开源平台,旨在管理端到端机器学习生命周期。它允许您跟踪实验、将代码打包为可复现的运行,并共享和部署模型。
https://mlflow.org/
商标声明:本软件列表由 Bitnami 打包。产品中提及的 respective 商标归各自公司所有,使用这些商标并不意味着任何关联或认可。
简明使用指南
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/mlflow
希望在生产环境中使用 MLflow?请尝试 https://bitnami.com/enterprise,这是 Bitnami 目录的商业版。
⚠️ 重要通知:Bitnami 目录即将变更
自 2025 年 8 月 28 日起,Bitnami 将改进其公共目录,在新的 https://news.broadcom.com/app-dev/broadcom-introduces-bitnami-secure-images-for-production-ready-containerized-applications 下提供精选的强化、安全聚焦镜像集。作为此过渡的一部分:
- 首次向社区用户提供热门容器镜像的安全优化版本访问权限。
- Bitnami 将开始在其免费层级中弃用对非强化、基于 Debian 的软件镜像的支持,并将逐步从公共目录中移除非最新标签。因此,社区用户将只能访问数量减少的强化镜像。这些镜像仅以“latest”标签发布,适用于开发目的。
- 从 8 月 28 日开始,在两周内,所有现有容器镜像(包括旧版本或特定版本标签,例如 2.50.0、10.6)将从公共目录(docker.io/bitnami)迁移到“Bitnami Legacy”仓库(docker.io/bitnamilegacy),迁移后将不再接收更新。
- 对于生产工作负载和长期支持,建议用户采用 Bitnami Secure Images,其中包括强化容器、更小的***面、CVE 透明度(通过 VEX/KEV)、SBOM 以及企业支持。
这些变更旨在通过推广软件供应链完整性和最新部署的最佳实践,提高所有 Bitnami 用户的安全态势。有关更多详情,请访问 https://github.com/bitnami/containers/issues/83267。
介绍
此 Chart 使用 https://helm.sh 包管理器在 https://kubernetes.io 集群上引导 https://github.com/bitnami/containers/tree/main/bitnami/mlflow 部署。
Python 专为与 Python 全面集成而构建,使您能够将其与其库和主要包一起使用。
前提条件
- Kubernetes 1.19+
- Helm 3.2.0+
- 底层基础设施支持 PV 供应器
- 用于部署扩展的 ReadWriteMany 卷
安装 Chart
要使用发布名称 my-release 安装 Chart:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mlflow
注意:您需要将占位符
REGISTRY_NAME和REPOSITORY_NAME替换为 Helm Chart 仓库和存储库的引用。例如,对于 Bitnami,需使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
该命令以默认配置在 Kubernetes 集群上部署 mlflow。参数 部分列出了可在安装期间配置的参数。
提示:使用
helm list列出所有发布
配置和安装详情
资源请求和限制
Bitnami Charts 允许为 Chart 部署内的所有容器设置资源请求和限制。这些设置位于 resources 值中(参见参数表)。设置请求对于生产工作负载至关重要,应根据您的具体用例进行调整。
为简化此过程,Chart 包含 resourcesPreset 值,可根据不同预设自动设置 resources 部分。有关这些预设,请查看 https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15。但是,在生产工作负载中不建议使用 resourcesPreset,因为它可能无法完全适应您的特定需求。有关容器资源管理的更多信息,请参阅 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/。
Prometheus 指标
通过将 tracking.metrics.enabled 设置为 true,此 Chart 可与 Prometheus 集成。这将在服务中公开 MLFlow 原生 Prometheus 端点,并包含必要的注解以被 Prometheus 自动抓取。
Prometheus 要求
要使集成正常工作,需要安装 Prometheus 或 Prometheus Operator。安装 https://github.com/bitnami/charts/tree/main/bitnami/prometheus 或 https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus,可轻松在集群中部署可用的 Prometheus。
与 Prometheus Operator 集成
该 Chart 可以部署 ServiceMonitor 对象,以与 Prometheus Operator 安装集成。为此,设置值 tracking.metrics.serviceMonitor.enabled=true。确保集群中已安装 Prometheus Operator CustomResourceDefinitions,否则将失败并显示以下错误:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
安装 https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus 以获取必要的 CRD 和 Prometheus Operator。
使用 TLS 保护流量
通过设置 tracking.tls.enabled=true,MLflow 可以加密通信。Chart 允许两种配置选项:
- 使用
tracking.tls.certificatesSecret值提供您自己的密钥。同时使用tracking.tls.certFilename、tracking.tls.certKeyFilename和tracking.tls.certCAFilename值设置证书文件的正确名称。 - 通过
tracking.tls.autoGenerated=true让 Chart 自动生成证书。
备份和恢复
要在 Kubernetes 上备份和恢复 Helm Chart 部署,需要使用 https://velero.io/(Kubernetes 备份/恢复工具)备份源部署的持久卷,并将其附加到新部署。有关使用 Velero 的说明,请参阅 https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-backup-restore-deployments-velero-index.html。
参数
全局参数
| 名称 | 描述 | 值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局 Docker 仓库密钥名称数组 | [] |
global.defaultStorageClass | 持久卷的全局默认 StorageClass | "" |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整部署的 securityContext 部分,使其与 Openshift restricted-v2 SCC 兼容:移除 runAsUser、runAsGroup 和 fsGroup,让平台使用其允许的默认 ID。可能值:auto(如果检测到运行的集群是 Openshift 则应用)、force(始终执行调整)、disabled(不执行调整) | auto |
通用参数
| 名称 | 描述 | 值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
apiVersions | 覆盖 .Capabilities 报告的 Kubernetes API 版本 | [] |
nameOverride | 部分覆盖 common.names.name 的字符串 | "" |
fullnameOverride | 完全覆盖 common.names.fullname 的字符串 | "" |
namespaceOverride | 完全覆盖 common.names.namespace 的字符串 | "" |
commonLabels | 添加到所有部署对象的标签 | {} |
commonAnnotations | 添加到所有部署对象的注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 随发布一起部署的额外对象数组 | [] |
diagnosticMode.enabled | 启用诊断模式(所有探针将被禁用,命令将被覆盖) | false |
diagnosticMode.command | 覆盖部署中所有容器的命令 | ["sleep"] |
diagnosticMode.args | 覆盖部署中所有容器的参数 | ["infinity"] |
MLflow 通用参数
| 名称 | 描述 | 值 |
|---|---|---|
image.registry | mlflow 镜像仓库 | REGISTRY_NAME |
image.repository | mlflow 镜像存储库 | REPOSITORY_NAME/mlflow |
image.digest | mlflow 镜像摘要(格式为 sha256:aa.... 注意:如果设置此参数,将覆盖镜像标签,建议使用不可变标签) | "" |
image.pullPolicy | mlflow 镜像拉取策略 | IfNotPresent |
image.pullSecrets | mlflow 镜像拉取密钥 | [] |
image.debug | 启用 mlflow 镜像调试模式 | false |
gitImage.registry | Git 镜像仓库 | REGISTRY_NAME |
gitImage.repository | Git 镜像存储库 | REPOSITORY_NAME/git |
gitImage.digest | Git 镜像摘要(格式为 sha256:aa.... 注意:如果设置此参数,将覆盖标签) | "" |
gitImage.pullPolicy | Git 镜像拉取策略 | IfNotPresent |
gitImage.pullSecrets | 指定 docker-registry 密钥名称数组 | [] |
MLflow Tracking 参数
| 名称 | 描述 | 值 |
|---|---|---|
tracking.enabled | 启用 Tracking 服务器 | true |
tracking.replicaCount | 要部署的 mlflow 副本数 | 1 |
tracking.host | mlflow tracking 监听主机。设置为 "[::]" 以使用 ipv6。 | 0.0.0.0 |
tracking.containerPorts.http | mlflow HTTP 容器端口 | 5000 |
tracking.livenessProbe.enabled | 在 mlflow 容器上启用 livenessProbe | true |
tracking.livenessProbe.initialDelaySeconds | livenessProbe 的初始延迟秒数 | 5 |
tracking.livenessProbe.periodSeconds | livenessProbe 的周期秒数 | 10 |
tracking.livenessProbe.timeoutSeconds | livenessProbe 的超时秒数 | 5 |
tracking.livenessProbe.failureThreshold | livenessProbe 的失败阈值 | 5 |
tracking.livenessProbe.successThreshold | livenessProbe 的成功阈值 | 1 |
tracking.readinessProbe.enabled | 在 mlflow 容器上启用 readinessProbe | true |
tracking.readinessProbe.initialDelaySeconds | readinessProbe 的初始延迟秒数 | 5 |
tracking.readinessProbe.periodSeconds | readinessProbe 的周期秒数 | 10 |
tracking.readinessProbe.timeoutSeconds | readinessProbe 的超时秒数 | 5 |
tracking.readinessProbe.failureThreshold | readinessProbe 的失败阈值 | 5 |
tracking.readinessProbe.successThreshold | readinessProbe 的成功阈值 | 1 |
tracking.startupProbe.enabled | 在 mlflow 容器上启用 startupProbe | false |
tracking.startupProbe.initialDelaySeconds | startupProbe 的初始延迟秒数 | 5 |
tracking.startupProbe.periodSeconds | startupProbe 的周期秒数 | 10 |
tracking.startupProbe.timeoutSeconds | startupProbe 的超时秒数 | 5 |
tracking.startupProbe.failureThreshold | startupProbe 的失败阈值 | 5 |
tracking.startupProbe.successThreshold | startupProbe 的成功阈值 | 1 |
tracking.customLivenessProbe | 覆盖默认 livenessProbe 的自定义探针 | {} |
tracking.customReadinessProbe | 覆盖默认 readinessProbe 的自定义探针 | {} |
tracking.customStartupProbe | 覆盖默认 startupProbe 的自定义探针 | {} |
tracking.resourcesPreset | 根据通用预设设置容器资源(允许值:none、nano、micro、small、medium、large、xlarge、2xlarge)。如果设置了 tracking.resources,则忽略此参数(生产环境建议使用 tracking.resources)。 | medium |
tracking.resources | 设置容器对 CPU 或内存等不同资源的请求和限制(生产工作负载必不可少) | {} |
tracking.podSecurityContext.enabled | 启用 mlflow pods 的安全上下文 | true |
tracking.podSecurityContext.fsGroupChangePolicy | 设置文件系统组更改策略 | Always |
tracking.podSecurityContext.sysctls | 使用 sysctl 接口设置内核参数 | [] |
tracking.podSecurityContext.supplementalGroups | 设置文件系统额外组 |
注意:此 Chart 的 README 超过了 DockerHub 25000 字符的长度限制,因此已被截断。完整 README 可在 https://github.com/bitnami/charts/blob/main/bitnami/mlflow/README.md 查看。
bitnamicharts 命名空间的其他可用镜像:
bitnamicharts/mysql
bitnamicharts/kafka
bitnamicharts/etcd
bitnamicharts/postgresql
bitnamicharts/harbor
bitnamicharts/milvus
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
轩辕镜像加速拉取命令点我查看更多 mlflow 镜像标签
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务