当前位置: 首页 > news >正文

k8s中的kubeflow1.02安装过程记录

kubeflow

Kubeflow是的机器学习工具包。Kubeflow是运行在K8S之上的一套技术栈,这套技术栈包含了很多组件,组件之间的关系比较松散,我们可以配合起来用,也可以单独用其中的一部分。

Kubeflow提供了一大堆组件,涵盖了机器学习的方方面面,为了对Kubeflow有个更直观深入的了解,先整体看一下Kubeflow都有哪些组件,并对Kubeflow的主要组件进行简单的介绍:

(1) Central Dashboard:Kubeflow的dashboard看板页面

(2) Metadata:用于跟踪各数据集、作业与模型

(3) Jupyter Notebooks:一个交互式业务IDE编码环境

(4) Frameworks for Training:支持的ML框架

    Chainer
    MPI
    MXNet
    PyTorch
    TensorFlow

(5) Hyperparameter Tuning:Katib,超参数服务器

(6) Pipelines:一个ML的工作流组件,用于定义复杂的ML工作流

(7) Tools for Serving:提供在上对机器学习模型的部署

KFServing
Seldon Core Serving
TensorFlow Serving(TFJob):提供对Tensorflow模型的在线部署,支持版本控制及无需停止线上服务、切换模型等
NVIDIA Triton Inference Server(Triton以前叫TensorRT)
TensorFlow Batch Prediction
(8) Multi-Tenancy in Kubeflow:Kubeflow中的多租户

(9) Fairing:一个将code打包构建image的组件

Kubeflow中大多数组件的实现都是通过定义CRD来工作。目前Kubeflow主要的组件有:

Operator是针对不同的机器学习框架提供资源调度和分布式训练的能力(TF-Operator,PyTorch-Operator,Caffe2-Operator,MPI-Operator,MXNet-Operator);

Pipelines是一个基于Argo实现了面向机器学习场景的流水线项目,提供机器学习流程的创建、编排调度和管理,还提供了一个Web UI。

Katib是基于各个Operator实现的超参数搜索和简单的模型结构搜索的系统,支持并行搜索和分布式训练等。超参优化在实际的工作中还没有被大规模的应用,所以这部分的技术还需要一些时间来成熟;

Serving支持部署各个框架训练好的模型的服务化部署和离线预测。Kubeflow提供基于TFServing,KFServing,Seldon等好几种方案。由于机器学习框架很多,算法模型也各种各样。工业界一直缺少一种能真正统一的部署框架和方案。这方面Kubeflow也仅仅是把常见的都集成了进来,但是并没有做更多的抽象和统一。
部署环境及要求

Kubernetes集群必须满足以下最低要求:
集群必须至少包含一个工作节点,且最少为:
4个CPU
50 GB的存储空间
12 GB内存
兼容性说明:

kubeflow安装

在此强烈推荐使用阿里云k’8s集群进行安装

首先下载kfctl包,这里提供的是1.02版本
下载地址

没有科学上网的话下载速度非常慢,推荐先用梯子下到电脑上再导入

解压安装包并添加到执行目录

tar -xvf kfctl_v1.0.2-0-ga476281_linux.tar.gz
sudo cp kfctl /usr/bin

 

下载manifests工具包到/root/kubeflow/路径:
kubeflow为自己创建

wget https://github.com/kubeflow/manifests/archive/v1.0.2.tar.gz

等候一会即可下载完成,若下载速度很慢也可先下到电脑上再导入

下载yaml文件:

wget https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_k8s_istio.v1.0.2.yaml

然后修改yaml文件,下拉到最后,将使用manifests文件从远程改为本地:

vim kfctl_k8s_istio.v1.0.2.yaml

 



路径就是manifests下载下来的压缩包路径

然后配置环境:

vim /etc/profile
export BASE_DIR=/自己选定文件目录/
export KF_NAME=my-kubeflow(名字自取,这里以my-kubeflow为例)
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_URI="/root/kubeflow/kfctl_k8s_istio.v1.0.2.yaml"

CONFIG_URI值就是yaml文件路径
配置完成后记得使其生效

source /etc/profile

 执行

mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl build -V -f ${CONFIG_URI}
kfctl apply -V -f ${CONFIG_URI}

拉取镜像

由于很多需要翻墙下载,所以很多会无法成功被拉取

在此推荐采用手动的方式,先将安装所必须的镜像文件下载到docker:

gcr.io/kubeflow-images-public/ingress-setup:latest
gcr.io/kubeflow-images-public/admission-webhook:v1.0.0-gaf96e4e3
gcr.io/kubeflow-images-public/kubernetes-sigs/application:1.0-beta
argoproj/argoui:v2.3.0
gcr.io/kubeflow-images-public/centraldashboard:v1.0.0-g3ec0de71
gcr.io/kubeflow-images-public/jupyter-web-app:v1.0.0-g2bd63238
gcr.io/kubeflow-images-public/katib/v1alpha3/katib-controller:v0.8.0
gcr.io/kubeflow-images-public/katib/v1alpha3/katib-db-manager:v0.8.0
mysql:8
gcr.io/kubeflow-images-public/katib/v1alpha3/katib-ui:v0.8.0
gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0
gcr.io/kfserving/kfserving-controller:0.2.2
metacontroller/metacontroller:v0.3.0
mysql:8.0.3
gcr.io/kubeflow-images-public/metadata:v0.1.11
gcr.io/ml-pipeline/envoy:metadata-grpc
gcr.io/tfx-oss-public/ml_metadata_store_server:v0.21.1
gcr.io/kubeflow-images-public/metadata-frontend:v0.1.8
minio/minio:RELEASE.2018-02-09T22-40-05Z
gcr.io/ml-pipeline/api-server:0.2.5
gcr.io/ml-pipeline/visualization-server:0.2.5
gcr.io/ml-pipeline/persistenceagent:0.2.5
gcr.io/ml-pipeline/scheduledworkflow:0.2.5
gcr.io/ml-pipeline/frontend:0.2.5
gcr.io/ml-pipeline/viewer-crd-controller:0.2.5
mysql:5.6
gcr.io/kubeflow-images-public/notebook-controller:v1.0.0-gcd65ce25
gcr.io/kubeflow-images-public/profile-controller:v1.0.0-ge50a8531
gcr.io/kubeflow-images-public/kfam:v1.0.0-gf3e09203
gcr.io/kubeflow-images-public/pytorch-operator:v1.0.0-g047cf0f
docker.io/seldonio/seldon-core-operator:1.0.1
gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4
gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4
gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4
gcr.io/google_containers/spartakus-amd64:v1.1.0
tensorflow/tensorflow:1.8.0
gcr.io/kubeflow-images-public/tf_operator:v1.0.0-g92389064
argoproj/workflow-controller:v2.3.0

以上参考https://blog.csdn.net/qq_46595591/article/details/107765833

完成后再次部署应用

kfctl apply -V -f ${CONFIG_URI}

查看

kubectl -n kubeflow get all

当所有插件镜像状态变为running时即可

NAME                                                           READY   STATUS      RESTARTS   AGE
admission-webhook-bootstrap-stateful-set-0                     1/1     Running     6          2d4h
admission-webhook-deployment-569558c8b6-n8b7k                  1/1     Running     0          13h
application-controller-stateful-set-0                          1/1     Running     3          2d4h
argo-ui-7ffb9b6577-w8pb7                                       1/1     Running     7          3d7h
centraldashboard-659bd78c-fxgqd                                1/1     Running     3          3d7h
jupyter-web-app-deployment-878f9c988-xgh82                     1/1     Running     3          2d5h
katib-controller-7f58569f7d-8bw7z                              1/1     Running     4          3d7h
katib-db-manager-54b66f9f9d-ngqw9                              1/1     Running     3          3d7h
katib-mysql-dcf7dcbd5-7wbck                                    1/1     Running     12         4d1h
katib-ui-6f97756598-4mtjs                                      1/1     Running     3          3d7h
kfserving-controller-manager-0                                 2/2     Running     7          2d5h
metacontroller-0                                               1/1     Running     5          3d7h
metadata-db-65fb5b695d-wq8vh                                   1/1     Running     12         4d1h
metadata-deployment-65ccddfd4c-vwfd2                           1/1     Running     3          3d7h
metadata-envoy-deployment-7754f56bff-svtz2                     1/1     Running     3          3d7h
metadata-grpc-deployment-75f9888cbf-zj4sn                      1/1     Running     5          3d7h
metadata-ui-7c85545947-v68l7                                   1/1     Running     3          3d7h
minio-69b4676bb7-w96xk                                         1/1     Running     12         4d1h
ml-pipeline-5cddb75848-bsc48                                   1/1     Running     3          2d6h
ml-pipeline-ml-pipeline-visualizationserver-7f6fcb68c8-vxjj7   1/1     Running     3          2d7h
ml-pipeline-persistenceagent-6ff9fb86dc-dvxx4                  1/1     Running     5          2d6h
ml-pipeline-scheduledworkflow-7f84b54646-ndxcb                 1/1     Running     3          2d7h
ml-pipeline-ui-6758f58868-gqvlp                                1/1     Running     3          2d6h
ml-pipeline-viewer-controller-deployment-685874bc58-jljw8      1/1     Running     3          2d5h
mysql-6bcbfbb6b8-xmphz                                         1/1     Running     12         4d1h
notebook-controller-deployment-7db7c8589d-mlgb4                1/1     Running     3          2d5h
profiles-deployment-56b7c6788f-kk8kh                           2/2     Running     6          2d7h
pytorch-operator-cf8c5c497-nmfnv                               1/1     Running     7          3d7h
seldon-controller-manager-6b4b969447-qp7l4                     1/1     Running     20         4d1h
spark-operatorcrd-cleanup-rrpxd                                0/2     Completed   0          3d7h
spark-operatorsparkoperator-76dd5f5688-kn28n                   1/1     Running     3          3d7h
spartakus-volunteer-5dc96f4447-xjclm                           1/1     Running     3          3d7h
tensorboard-5f685f9d79-9x549                                   1/1     Running     12         4d1h
tf-job-operator-5fb85c5fb7-lqvrg                               1/1     Running     6          3d7h
workflow-controller-689d6c8846-znvt9                           1/1     Running     12         4d1h
kubectl get svc -n kubeflow

访问kubeflow UI界面方法:

1、NodePort方式暴露

kubectl -n kubeflow edit svc centraldashboard

将type:ClusterIP 修改为type:NodePort即可访问kubeflow 的centraldashboard UI界面了。

注意,这种方法只能看到主界面,各子界面会出现sorry,* not found的错误提示,这是因为只暴露了centraldashboard服务的端口,其他如pipeline、noteboook、katib等服务端口都未暴露出来。

2、istio方式访问

kubectl get svc istio-ingressgateway -n istio-system
NAME                   TYPE       CLUSTER-IP        EXTERNAL-IP   PORT(S)                                                                                                                                      AGE
istio-ingressgateway   NodePort   192.168.255.155   <none>        15020:32058/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:31830/TCP,15030:31181/TCP,15031:32722/TCP,15032:31905/TCP,15443:32104/TCP   4h23m

通过31380端口访问即可。

任何一个节点端口:31380访问。

 

删除kubeflow

kfctl delete -f ${CONFIG_URI}

相关文章:

  • 在struts中html:select 标签的disabled属性中使用java代码
  • k8s 开发流程
  • 用Linux搞定了Windows中无法使用也无法修复的MP3!
  • centos7 k8s安装部署nvidia-docker2 排坑记录
  • Runtime.exec系列方法与ProcessBuilder类
  • kubeflow Pods stuck in Pending state
  • String的split方法的使用
  • k8s pv 一直是release状态
  • 使用DateFormat把时间长度格式化为时:分:秒格式
  • centos 7 安装go遇到问题: No package golang available.
  • javascript可以直接比较时间字符串的大小
  • centos 把程序所在目录加入到环境变量的配置文件中
  • 分析hibernate中table per class hierarchy映射方式的一个异常
  • linux 磁盘分区
  • oracle分页查询的排序问题
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 08.Android之View事件问题
  • 2019年如何成为全栈工程师?
  • 30秒的PHP代码片段(1)数组 - Array
  • js面向对象
  • js写一个简单的选项卡
  • Python学习之路16-使用API
  • select2 取值 遍历 设置默认值
  • vue-loader 源码解析系列之 selector
  • vue中实现单选
  • zookeeper系列(七)实战分布式命名服务
  • 测试开发系类之接口自动化测试
  • 经典排序算法及其 Java 实现
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 判断客户端类型,Android,iOS,PC
  • 06-01 点餐小程序前台界面搭建
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • $().each和$.each的区别
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (MATLAB)第五章-矩阵运算
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)80c52学习之旅-起始篇
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET开发人员必知的八个网站
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET应用架构设计:原则、模式与实践 目录预览
  • /etc/fstab和/etc/mtab的区别
  • []Telit UC864E 拨号上网
  • [AIGC] MySQL存储引擎详解
  • [ANT] 项目中应用ANT
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)