新Kubeflow,新征程 (一):简化部署体验

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 时光飞逝,Kubeflow这个基于Kubernetes的云原生机器学习平台方案已经诞生了1年多的时间,人们审视它的眼光不再是好奇和宽容。人们已经开始审视,思考甚至挑战Kubeflow的价值, 而Kubeflow社区包括Google本身也在思考和变革,在这种背景下Kubeflow 0.4.0发布了。

综述

2017年底,奥斯汀的Kubecon上,Google项目的产品经理 David Aronchick 和首席工程师 Jeremy Lewi将Kubeflow这个项目带到了大家的视野里。经过一年的发展,在2018年的西雅图的Kubecon上, Kubeflow的热浪席卷整个会场,大约有近15-16个与KubeFlow相关的分享,来自于Google,阿里巴巴,Intel,IBM等公司的社区贡献者都介绍了自己和KubeFlow相关的经验。应该说,Kubeflow在2018赢得业界的关注。

kubeflow.png

但是平心而论,它还没有获得用户的信任。从能力上来看还有硬伤:

  1. 不能升级,作为一款软件方案,如果没有升级方案只能重建,对于用户来说是不可以接受。
  2. 不支持多租户,目前仅适用数据科学家的solo场景,无法支持数据科学家团队合作场景。缺乏隔离和资源限制导致并不适合规模中等以上的公司使用。
  3. 不够安全,许多组件都没有认证机制。

要承认Kubeflow距离真正的生产可用还有比较大的距离,但是从Kubeflow的Roadmap看,这也是Kubeflow社区在努力的方向。同时也能看到Google在发力,有了更多的工程师投入,同时向Nvidia,Cisco,红帽,微软等许多公司也真正有专人在KubeFlow上投入。如果有明确的方向,再加上持续的大规模投入从长期看Kubeflow的发展还是很有希望的。

与其临渊羡鱼,不如退而结网,改善Kubeflow真正有效的方法是大家尝试用KubeFlow解决自己在机器学习或者深度学习场景下的问题,并且将各种问题,吐槽甚至是解决方案回馈给社区,才能真正帮助KubeFlow成为云原生下解决数据科学家团队运行机器学习问题的利器。在这个背景下,Kubeflow 0.4.0于1月7日正式发布了。在0.4.0中包含了:

  • Jupyter Hub可以使用PVC
  • TFJob和PyTorch已经进入Beta阶段
  • Katib支持TFJob
  • Pipeline
  • Kubeflow的部署也变得更加简单,用户不用再似懂非懂的运行一堆ksonnet param和apply命令

其中Pipline(机器学习工作流)和Katib (自动机器学习框架)是0.4.0中新加入的能力;而TFJob进入了V1Beta1,距离真正的V1也是近在咫尺了。而Jupyter Hub与之前也有比较明显的变化。我们会在系列文章中与大家介绍。

为了能让国内的用户方便的体验到KubeFlow 0.4.0,阿里云容器服务团队第一时间对KubeFlow进行了适配。您可以按照本文档在阿里云容器服务上部署Kubeflow 0.4.0的版本。后续随着KubeFlow的不断完善,我们也会将KubeFlow和阿里云的能力进行深度整合。为您提供基于Kubernetes的完整的云原生机器学习体验。

部署Kubeflow

部署阿里云Kubernetes容器服务

选择GPU类型 (您也可以选择CPU类型,结合您的实际需求)

具体参考创建GPU集群

安装ksonnet

Kubeflow 利用 ksonnet 打包和部署其组件。

首先,安装ksonnet版本 0.13.1

cd /tmp/
curl -O http://kubeflow.oss-cn-beijing.aliyuncs.com/ks_0.13.1_linux_amd64.tar.gz
tar -xvf ks_0.13.1_linux_amd64.tar.gz
cp */ks /usr/local/bin/
rm -rf ks_0.13.1_linux_amd64*

部署PVC

和之前的版本相比,在0.4.0的版本中,KubeFlow依赖于katib-mysql,pipeline-mino,pipeline-mysql这三个有状态服务。而这些需要提前部署,您也可以根据自己的需求修改PV和PVC的配置

wget http://kubeflow.oss-cn-beijing.aliyuncs.com/storage.yaml
kubectl create namespace kubeflow
kubectl create -f storage.yaml

注意: 这里提供的方案是为了满足快速部署,您可以根据自身需求配置更为合理的PV和PVC配置。

下载Kubeflow的repo

KUBEFLOW_SRC=~/kubeflow-repo
mkdir ${KUBEFLOW_SRC}
cd ${KUBEFLOW_SRC}
curl -O http://kubeflow.oss-cn-beijing.aliyuncs.com/download.sh
bash download.sh

在阿里云上安装Kubeflow

由于国内访问Google默认的的镜像仓库不稳定,请您在选择platform时候,指定云平台为ack( Alibaba Cloud Kubernetes)

export KFAPP=mykubeflow

cd ~
${KUBEFLOW_SRC}/scripts/kfctl.sh init ${KFAPP} --platform ack
cd ${KFAPP}
${KUBEFLOW_SRC}/scripts/kfctl.sh generate platform
${KUBEFLOW_SRC}/scripts/kfctl.sh apply platform
${KUBEFLOW_SRC}/scripts/kfctl.sh generate k8s
${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s

注意:第一次执行${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s的时候,会报出如下错误:

error.jpg

此时不用担心,这是Kubeflow的已知issue,可以重新执行一次apply命令解决。

${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s

部署pytorch

这是Kubeflow 0.4.0的已知issue,由于Katib要依赖pytorch, 需要提前部署一下pytorch

cd ~
cd ${KFAPP}/ks_app/
ks apply default -c pytorch-operator

关闭Kubeflow使用报告 (可选)

默认Kubeflow会想Google匿名上报用户的使用情况,如果您感到不妥,可以按照以下方法关闭

kubectl delete -n kubeflow deploy spartakus-volunteer
cd ~
cd ${KFAPP}/ks_app/
ks delete default  -c spartakus
ks component rm spartakus

访问Central UI

Kubeflow提供了一系列的UI:

  • Argo UI
  • JupyterHub
  • Katib
  • TFJobs Dashboard

Kubeflow提供了Central UI方便用户访问不同的服务,由于KubeFlow目前在安全上还有所欠缺,不建议您在互联网上暴露服务。您可以在本机使用port forward命令访问Central UI

export NAMESPACE=kubeflow
export PODNAME=`kubectl get po -n kubeflow  -l service=ambassador | grep -v NAME| head -1| awk '{print $1}'`
kubectl port-forward ${PODNAME} -n ${NAMESPACE} 8080:80

最终您可以直接访问Central UI, 并且导航栏访问不同的Kubeflow服务。这样您就可以开始您的Kubeflow之旅了。

http://localhost:8080/

central_ui.png

总结

本文向您介绍Kubeflow最新的变化以及如何在阿里云上部署Kubeflow最新版本的步骤,欢迎您亲自尝试。我们后续也会介绍如何在阿里云上使用Kubeflow具体服务的方法。

Kubeflow当前版本的部署安装对于GCE有比较强的绑定,导致使用者独立部署有一定的难度,为了方便您在非GCE的平台尝试,阿里云容器服务团队提供了阿里云上的部署方案,后续我们也会与Kubeflow进行更深入的整合,提供基于Kubeflow,并结合阿里云的存储,弹性和安全能力的机器学习解决方案。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
11天前
|
Kubernetes 安全 Serverless
没有银弹,只有取舍 - Serverless Kubernetes 的思考与征程(一)
Kubernetes作为云原生计算的基础项目,已经在开发者和企业中获得广泛的支持。然而其自身复杂性和陡峭的学习曲线依然让人望而生畏。在 CNCF 2020年度调研报告中,在Kubernetes技术落地过程中面临最大的挑战就是复杂性。
|
10天前
|
敏捷开发 运维 测试技术
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益提高。自动化运维作为提升效率、确保稳定性的关键手段,其重要性不言而喻。本文将探讨如何利用容器技术构建一个高效的自动化运维体系,实现从代码提交到产品上线的持续集成(CI)与持续部署(CD)。通过分析现代容器技术与传统虚拟化的差异,阐述容器化带来的轻量化、快速部署及易于管理的优势,并结合实例讲解如何在实际环境中搭建起一套完善的CI/CD流程。
|
2月前
|
存储 Kubernetes 数据安全/隐私保护
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(配置与密码安全)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(配置与密码安全)
39 0
|
3月前
|
人工智能 API 开发工具
基于流程编排工具低代码搭建大模型应用
流程编排是一种面向开发者的可视化开发工具,支持LLM、API、脚本等类型节点,旨在简化接入大型语言模型(LLM)流程,同时提供应用流程的全生命周期管理,包括流程的编排、试验、部署等,为开发者提供自定义AI应用开发一站式服务。
|
5月前
|
运维 Kubernetes Java
Higress 开源一周年:新版本,新标准,新工具,新征程
Higress 开源一周年:新版本,新标准,新工具,新征程
412 2
|
6月前
|
存储 分布式计算 大数据
构建与应用大数据环境:从搭建到开发与组件使用的全面指南
构建与应用大数据环境:从搭建到开发与组件使用的全面指南
|
6月前
|
人工智能 Kubernetes 大数据
探索云原生容器编排技术:如Kubernetes如何为大数据处理和AI模型的自动化部署带来便利
Kubernetes以容器为基础,将应用程序和其依赖项封装在容器中。这使得大数据处理和AI模型的部署更加一致和可移植,可以在不同的环境中轻松部署,包括开发、测试和生产环境。
208 0
|
7月前
|
Kubernetes Java Linux
解锁高效部署!快速搭建Kubernetes集群,提升团队生产力!
解锁高效部署!快速搭建Kubernetes集群,提升团队生产力!
68 0
|
11月前
|
关系型数据库 MySQL Java
快速部署框架
快速部署框架
57 0
|
12月前
|
运维 前端开发 jenkins
前端自动化集成部署交付实践
随着前后端分离应用模式的推广,前端项目可独立部署维护上线,不再仅仅将前端开发后打包的文件直接丢到一个文件目录下就完事大吉了,现在对前端来说也需要了解运维的相关知识,本文旨在介绍一些相关的运维概念以及一些前端运维的实践。
288 0