Kubeflow 简介 #

什么是云原生机器学习? #

在了解 Kubeflow 之前,我们需要先理解云原生机器学习的概念。传统的机器学习开发往往面临环境配置复杂、资源管理困难、协作不便等问题。

text
┌─────────────────────────────────────────────────────────────┐
│                  传统 ML 开发痛点                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  痛点 1:环境配置复杂                                        │
│  ├── 依赖冲突频繁                                           │
│  ├── GPU 驱动问题                                           │
│  └── 环境难以复现                                           │
│                                                             │
│  痛点 2:资源管理困难                                        │
│  ├── 计算资源利用率低                                        │
│  ├── 分布式训练配置复杂                                      │
│  └── 缺乏弹性伸缩                                           │
│                                                             │
│  痛点 3:协作不便                                            │
│  ├── 实验结果难以共享                                        │
│  ├── 模型版本混乱                                           │
│  └── 缺乏统一平台                                           │
│                                                             │
│  痛点 4:部署流程繁琐                                        │
│  ├── 模型服务化困难                                          │
│  ├── 缺乏标准化流程                                          │
│  └── 运维成本高                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

云原生的优势 #

text
云原生 ML 特性:
├── 容器化 - 环境一致性保证
├── 微服务 - 组件解耦,灵活组合
├── 声明式 API - 简化运维
├── 弹性伸缩 - 资源高效利用
└── 可移植性 - 多云部署

什么是 Kubeflow? #

Kubeflow 是一个开源的机器学习工具包,专门为 Kubernetes 设计。它的目标是让机器学习工作流在 Kubernetes 上变得简单、可移植和可扩展。

核心定位 #

text
┌─────────────────────────────────────────────────────────────┐
│                     Kubeflow 定位                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │ Kubernetes  │  │  端到端      │  │  开源免费    │         │
│  │   原生      │  │  ML 工具链   │  │             │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  可移植      │  │  可扩展      │  │  社区驱动    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Kubeflow 的设计理念 #

text
1. Kubernetes 原生
   ├── 利用 K8s 资源管理能力
   ├── 使用 K8s API 和控制器模式
   └── 与 K8s 生态无缝集成

2. 可组合性
   ├── 组件独立部署
   ├── 按需选择使用
   └── 灵活组合工作流

3. 可移植性
   ├── 支持多云部署
   ├── 避免厂商锁定
   └── 统一的开发体验

4. 可扩展性
   ├── 支持单机到集群
   ├── 支持小团队到企业
   └── 支持插件扩展

Kubeflow 的历史 #

发展历程 #

text
2017年 ─── Kubeflow 项目启动
    │
    │      Google 内部项目开源
    │      KubeCon 首次发布
    │
2018年 ─── 快速发展期
    │
    │      社区快速增长
    │      Pipelines 发布
    │
2019年 ─── 1.0 版本发布
    │
    │      组件成熟
    │      生产可用
    │
2020年 ─── 加入 CNCF
    │
    │      成为 CNCF 项目
    │      企业广泛采用
    │
2021年 ─── 1.3 - 1.5 版本
    │
    │      功能增强
    │      性能优化
    │
2022年 ─── 1.6 - 1.7 版本
    │
    │      安全增强
    │      多租户支持
    │
至今   ─── 持续发展
    │
    │      社区活跃
    │      生态完善

版本演进 #

版本 发布时间 主要特性
0.1 2018 基础组件:TFJob, Jupyter
0.5 2018 Pipelines, Katib
1.0 2019 生产就绪,完整组件
1.3 2021 多用户隔离增强
1.5 2021 KServe 集成
1.7 2022 安全增强,认证改进
1.8 2023 新 UI,性能优化

Kubeflow 核心组件 #

组件概览 #

text
┌─────────────────────────────────────────────────────────────┐
│                    Kubeflow 组件架构                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  用户界面层                                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Dashboard  │  Jupyter UI  │  Pipelines UI          │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  核心组件层                                                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  Pipelines  │  │  Notebooks  │  │    Katib    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Serving   │  │   Training  │  │   Volumes   │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
│  基础设施层                                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Kubernetes 集群                         │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

1. Kubeflow Pipelines #

text
┌─────────────────────────────────────────────────────────────┐
│                   Kubeflow Pipelines                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:构建和管理 ML 工作流                                  │
│                                                             │
│  核心特性:                                                  │
│  ├── 可视化编排 - 拖拽式构建流水线                          │
│  ├── 组件复用 - 共享和重用 ML 组件                          │
│  ├── 实验追踪 - 记录运行历史和指标                          │
│  └── 版本控制 - 流水线版本管理                              │
│                                                             │
│  使用场景:                                                  │
│  ├── 数据预处理流水线                                       │
│  ├── 模型训练流水线                                         │
│  └── 端到端 ML 工作流                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. Notebooks #

text
┌─────────────────────────────────────────────────────────────┐
│                   Kubeflow Notebooks                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:提供交互式开发环境                                    │
│                                                             │
│  支持类型:                                                  │
│  ├── JupyterLab                                            │
│  ├── VS Code Server                                        │
│  └── RStudio                                               │
│                                                             │
│  核心特性:                                                  │
│  ├── 多用户隔离                                            │
│  ├── GPU 支持                                              │
│  ├── 自定义镜像                                            │
│  └── 持久化存储                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. Katib #

text
┌─────────────────────────────────────────────────────────────┐
│                       Katib                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:自动化超参数优化                                      │
│                                                             │
│  支持算法:                                                  │
│  ├── Random Search                                         │
│  ├── Grid Search                                           │
│  ├── Bayesian Optimization                                 │
│  ├── Hyperband                                             │
│  └── NAS (神经架构搜索)                                     │
│                                                             │
│  支持框架:                                                  │
│  ├── TensorFlow                                            │
│  ├── PyTorch                                               │
│  ├── MXNet                                                 │
│  └── 任意框架                                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. Training Operators #

text
┌─────────────────────────────────────────────────────────────┐
│                   Training Operators                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:管理分布式训练作业                                    │
│                                                             │
│  支持的训练算子:                                            │
│  ├── TFJob - TensorFlow 分布式训练                         │
│  ├── PyTorchJob - PyTorch 分布式训练                       │
│  ├── MPIJob - MPI/Horovod 分布式训练                       │
│  ├── XGBoostJob - XGBoost 分布式训练                       │
│  └── MXJob - MXNet 分布式训练                              │
│                                                             │
│  核心特性:                                                  │
│  ├── 自动调度 Pod                                           │
│  ├── 服务发现                                              │
│  ├── 故障恢复                                              │
│  └── GPU 资源管理                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5. Model Serving #

text
┌─────────────────────────────────────────────────────────────┐
│                     Model Serving                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:模型部署和服务化                                      │
│                                                             │
│  支持框架:                                                  │
│  ├── KServe (推荐)                                         │
│  ├── Seldon Core                                           │
│  ├── TFServing                                             │
│  └── Triton Inference Server                               │
│                                                             │
│  核心特性:                                                  │
│  ├── 自动扩缩容                                            │
│  ├── 多模型服务                                            │
│  ├── A/B 测试                                              │
│  └── 金丝雀发布                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Kubeflow 架构 #

整体架构 #

text
┌─────────────────────────────────────────────────────────────┐
│                    Kubeflow 整体架构                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    用户访问层                        │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐             │   │
│  │  │   Web   │  │   CLI   │  │   SDK   │             │   │
│  │  │   UI    │  │  工具   │  │  客户端  │             │   │
│  │  └─────────┘  └─────────┘  └─────────┘             │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   Kubeflow 组件                      │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐             │   │
│  │  │Pipeline │  │Notebook │  │  Katib  │             │   │
│  │  │ Operator│  │Operator │  │Operator │             │   │
│  │  └─────────┘  └─────────┘  └─────────┘             │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐             │   │
│  │  │ TFJob   │  │PyTorch  │  │ Serving │             │   │
│  │  │Operator │  │Operator │  │Operator │             │   │
│  │  └─────────┘  └─────────┘  └─────────┘             │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                  Kubernetes 集群                     │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐             │   │
│  │  │  API    │  │Scheduler│  │  etcd   │             │   │
│  │  │ Server  │  │         │  │         │             │   │
│  │  └─────────┘  └─────────┘  └─────────┘             │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   基础设施层                         │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐             │   │
│  │  │  计算   │  │  存储   │  │  网络   │             │   │
│  │  │  资源   │  │  资源   │  │  资源   │             │   │
│  │  └─────────┘  └─────────┘  └─────────┘             │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

命名空间和多租户 #

text
多租户架构:
├── kubeflow - 系统组件命名空间
├── kubeflow-user-example-com - 用户命名空间
│   ├── Notebooks
│   ├── Pipelines
│   ├── Experiments
│   └── Models
└── 自定义命名空间

用户隔离:
├── 命名空间级别隔离
├── RBAC 权限控制
├── 资源配额限制
└── 网络策略隔离

Kubeflow 的优势 #

1. 解决环境管理问题 #

text
问题:
├── 环境配置复杂
├── 依赖冲突频繁
├── GPU 驱动问题
└── 环境难以复现

Kubeflow 解决方案:
├── 容器化环境
├── 自定义镜像
├── GPU 自动调度
└── 环境可复现

2. 解决资源管理问题 #

text
问题:
├── 计算资源利用率低
├── 分布式训练配置复杂
├── 缺乏弹性伸缩
└── 资源竞争

Kubeflow 解决方案:
├── Kubernetes 资源调度
├── 训练算子自动化
├── 自动扩缩容
└── 资源配额管理

3. 解决协作问题 #

text
问题:
├── 实验结果难以共享
├── 模型版本混乱
├── 缺乏统一平台
└── 权限管理困难

Kubeflow 解决方案:
├── 多租户支持
├── 统一的 Dashboard
├── 模型注册中心
└── RBAC 权限控制

4. 解决部署问题 #

text
问题:
├── 模型服务化困难
├── 缺乏标准化流程
├── 运维成本高
└── 监控不完善

Kubeflow 解决方案:
├── KServe 模型服务
├── Pipelines 标准化
├── Kubernetes 运维
└── Prometheus 监控

Kubeflow vs 其他平台 #

功能对比 #

特性 Kubeflow MLflow AWS SageMaker Azure ML
开源
自托管
Kubernetes 原生
分布式训练 部分
超参数调优
流水线编排 部分
模型服务
多租户
学习曲线

选择建议 #

text
选择 Kubeflow 的场景:
├── 已有 Kubernetes 基础设施
├── 需要完整的 ML 平台
├── 需要多云部署能力
├── 团队有运维能力
└── 大规模生产环境

选择 MLflow 的场景:
├── 不需要 Kubernetes
├── 主要关注实验跟踪
├── 快速上手需求
└── 小型团队

选择 SageMaker/Azure ML 的场景:
├── 已使用对应云平台
├── 不想管理基础设施
├── 需要托管服务
└── 预算充足

Kubeflow 应用场景 #

1. 深度学习研究 #

text
场景:
├── 大规模模型训练
├── 超参数搜索
├── 实验管理
└── 结果复现

Kubeflow 方案:
├── Notebooks 交互开发
├── Katib 超参数调优
├── Pipelines 实验管理
└── 训练算子分布式训练

2. 企业 MLOps #

text
场景:
├── 多团队协作
├── 生产环境部署
├── 模型生命周期管理
└── 合规审计需求

Kubeflow 方案:
├── 多租户隔离
├── Pipelines 标准化流程
├── Model Registry
└── 完整审计日志

3. 云原生迁移 #

text
场景:
├── 传统 ML 平台迁移
├── 云原生转型
├── 多云部署
└── 成本优化

Kubeflow 方案:
├── 容器化迁移
├── Kubernetes 原生
├── 多云支持
└── 资源优化

学习路径 #

text
入门阶段
├── Kubeflow 简介(本文)
├── 安装与配置
└── 快速开始

基础阶段
├── Pipelines 流水线
├── Notebooks 笔记本
├── Katib 超参数调优
└── 模型服务

进阶阶段
├── 训练概述
├── TensorFlow 训练
├── PyTorch 训练
└── MPI 分布式训练

高级阶段
├── 高级配置
├── 安全配置
└── 监控与日志

实战阶段
├── 端到端示例
└── 生产环境部署

前置知识要求 #

text
必备知识:
├── Python 编程
│   ├── 基础语法
│   ├── 面向对象
│   └── 常用库 (numpy, pandas)
│
├── 机器学习基础
│   ├── 监督学习
│   ├── 深度学习基础
│   └── 模型评估
│
├── Docker 容器
│   ├── 镜像构建
│   ├── 容器操作
│   └── Dockerfile 编写
│
└── Kubernetes 基础
    ├── Pod, Service, Deployment
    ├── ConfigMap, Secret
    └── kubectl 命令

推荐知识:
├── Linux 命令行
├── Git 版本控制
├── 网络基础
└── 云计算概念

下一步 #

现在你已经了解了 Kubeflow 的基本概念,接下来学习 安装与配置,开始搭建你的 Kubeflow 环境!

最后更新:2026-04-05