重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“如何在Kubernetes上构建机器学习系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何在Kubernetes上构建机器学习系统”文章能帮助大家解决问题。
创新互联服务项目包括策勒网站建设、策勒网站制作、策勒网页制作以及策勒网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,策勒网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到策勒省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Kubeflow Pipelines 平台包括:
能够运行和追踪实验的管理控制台
能够执行多个机器学习步骤的工作流引擎 (Argo)
用来自定义工作流的 SDK,目前只支持 Python
而 Kubeflow Pipelines 的目标在于:
端到端的任务编排: 支持编排和组织复杂的机器学习工作流,该工作流可以被直接触发,定时触发,也可以由事件触发,甚至可以实现由数据的变化触发;
简单的实验管理: 帮助数据科学家尝试众多的想法和框架,以及管理各种试验。并实现从实验到生产的轻松过渡;
通过组件化方便重用: 通过重用 Pipelines 和组件快速创建端到端解决方案,无需每次从 0 开始的重新构建。
看到 Kubeflow Piplines 的能力,大家是不是都摩拳擦掌,想一睹为快?但是目前国内想使用 Kubeflow Pipeline 有两个挑战:
Pipelines 需要通过 Kubeflow 部署;而 Kubeflow 默认组件过多,同时通过 Ksonnet 部署 Kubeflow 也是很复杂的事情;
Pipelines 本身和谷歌云平台有深度耦合,无法运行在其他云平台上或者裸金属服务器的环境。
为了方便国内的用户安装 Kubeflow Pipelines,阿里云容器服务团队提供了基于 Kustomize 的 Kubeflow Pipelines 部署方案。和普通的 Kubeflow 基础服务不同,Kubeflow Pipelines 需要依赖于 MySQL 和 minio 这些有状态服务,也就需要考虑如何持久化和备份数据。在本例子中,我们借助阿里云 SSD 云盘作为数据持久化的方案,分别自动的为 mysql 和 minio 创建 SSD 云盘。
您可以在阿里云上尝试一下单独部署最新版本 Kubeflow Pipelines。
您需要安装 kustomize
在 Linux 和 Mac OS 环境,可以执行
opsys=linux # or darwin, or windows curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest |\ grep browser_download |\ grep $opsys |\ cut -d '"' -f 4 |\ xargs curl -O -L mv kustomize_*_${opsys}_amd64 /usr/bin/kustomize chmod u+x /usr/bin/kustomize
在 Windows 环境,可以下载 kustomize_2.0.3_windows_amd64.exe
在阿里云容器服务创建 Kubernetes 集群, 可以参考 文档
通过 ssh 访问 Kubernetes 集群,具体方式可以参考文档
下载源代码
yum install -y git git clone --recursive https://github.com/aliyunContainerService/kubeflow-aliyun
安全配置
3.1 配置 TLS 证书。如果没有 TLS 证书,可以通过下列命令生成
yum install -y openssl domain="pipelines.kubeflow.org" openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key -out kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt -subj "/CN=$domain/O=$domain"
如果您有TLS证书,请分别将私钥和证书保存到
kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key
和kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt
下
3.2 配置 admin 的登录密码
yum install -y httpd-tools htpasswd -c kubeflow-aliyun/overlays/ack-auto-clouddisk/auth admin New password: Re-type new password: Adding password for user admin
首先利用 kustomize 生成部署 yaml
cd kubeflow-aliyun/ kustomize build overlays/ack-auto-clouddisk > /tmp/ack-auto-clouddisk.yaml
查看所在的 Kubernetes 集群节点所在的地域和可用区,并且根据其所在节点替换可用区,假设您的集群所在可用区为 cn-hangzhou-g
, 可以执行下列命令
sed -i.bak 's/regionid: cn-beijing/regionid: cn-hangzhou/g' \ /tmp/ack-auto-clouddisk.yaml sed -i.bak 's/zoneid: cn-beijing-e/zoneid: cn-hangzhou-g/g' \ /tmp/ack-auto-clouddisk.yaml
建议您检查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已经设置
将容器镜像地址由 gcr.io
替换为 registry.aliyuncs.com
sed -i.bak 's/gcr.io/registry.aliyuncs.com/g' \ /tmp/ack-auto-clouddisk.yaml
建议您检查一下 /tmp/ack-auto-clouddisk.yaml 修改是否已经设置
调整使用磁盘空间大小, 比如需要调整磁盘空间为 200G
sed -i.bak 's/storage: 100Gi/storage: 200Gi/g' \ /tmp/ack-auto-clouddisk.yaml
验证 pipelines 的 yaml 文件
kubectl create --validate=true --dry-run=true -f /tmp/ack-auto-clouddisk.yaml
利用 kubectl 部署 pipelines
kubectl create -f /tmp/ack-auto-clouddisk.yaml
查看访问 pipelines 的方式,我们通过 ingress 暴露 pipelines 服务,在本例子中,访问 IP 是 112.124.193.271。而 Pipelines 管理控制台的链接是: https://112.124.193.271/pipeline/
kubectl get ing -n kubeflow NAME HOSTS ADDRESS PORTS AGE ml-pipeline-ui * 112.124.193.271 80, 443 11m
访问 pipelines 管理控制台
如果使用自签发证书,会提示此链接非私人链接,请点击显示详细信息, 并点击访问此网站。 请输入步骤 2.2 中的用户名 admin 和设定的密码。
这时就可以使用 pipelines 管理和运行训练任务了。
为什么这里要使用阿里云的 SSD 云盘?
这是由于阿里云的 SSD 云盘可以设置定期的自动备份,保证 pipelines 中的元数据不会丢失。
如何进行云盘备份?
如果您想备份云盘的内容,可以为云盘 手动创建快照 或者 为硬盘设置自动快照策略 按时自动创建快照。
如何清理 Kubeflow Piplines 部署?
这里的清理工作分为两个部分:
删除 Kubeflow Pipelines 的组件
kubectl delete -f /tmp/ack-auto-clouddisk.yaml
通过释放云盘分别释放 mysql 和 minio 存储对应的两个云盘
关于“如何在Kubernetes上构建机器学习系统”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。