Kubernetes 部署 kubeflow1.7.0

news2024/11/17 12:45:38

        KubeFlow 是一个开源的项目,旨在为 Kubernetes 提供可组合、便携式、可扩展的机器学习技术栈。它最初是为了解决在 Kubernetes 上运行分布式机器学习任务所带来的挑战而创建的。Kubernetes 本身是一个容器平台,但在近年来,越来越多的公司开始用它来运行各种工作负载,特别是机器学习任务。由于分布式机器学习任务通常需要不同的参数服务器(PS)和工作节点(worker),并且不同领域的学习任务对 PS 和 worker 有不同的需求,因此 Kubernetes 在处理机器学习任务时存在一些困难。
        KubeFlow 的核心组件是 TFJob,它是一个 Kubernetes 资源类型,用于定义 TensorFlow 作业。使用 TFJob,机器学习工程师可以按照他们对业务的理解,确定 PS 与 worker 的个数以及数据与日志的输入输出,而不需要编写繁杂的配置。KubeFlow 还提供了许多其他功能,如作业调度、多租户、网络隔离等,以简化机器学习任务在 Kubernetes 上的部署和管理。KubeFlow 的目标是让机器学习任务在 Kubernetes 上变得简单、可靠、可扩展和高效。

注意事项
  • 默认情况下Kubernetes环境需要提供StorageClass:local-storage
  • 国内环境拉取镜像失败可以增加前缀 (推荐方式) gcr.io/ml-pipeline/metadata-envoy:2.0.0-alpha.7 => m.daocloud.io/gcr.io/ml-pipeline/metadata-envoy:2.0.0-alpha.7,手动拉取之后重新打TAG
  • 从 Kubeflow 1.3 开始,所有组件都只能使用 kustomize 进行部署。
  • kustomize 5.0.0
    官方文档:GitHub - kubeflow/manifests at v1.7.0
方法一:一键部署命令
  • 测试环境信息:
  • CentOS Linux release 7.8.2003 (Core)
  • Kubernetes v1.26.0 (官方文档提示支持1.24/1.25)
  • Kubernetes网络组件: calico
https://github.com/kubeflow/manifests/tree/v1.7.0
下载并解压
tar -zxvf manifests-1.7.0.tar.gz
cd manifests-1.7.0
while ! kustomize build example | awk '!/well-defined/' | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
方法二:组件逐步安装
  • 仅使用 kubectl 和 kustomize 分别安装每个 Kubeflow 官方组件(在 apps 下)和每个公共服务(在 common 下)
  • kubectl apply 命令可能在第一次尝试时失败。这是 Kubernetes 和 kubectl 工作方式所支持的(例如,CR 必须在 CRD 准备就绪后创建)。解决方案是简单地重新运行该命令,直到成功为止。对于一键部署命令,包含了一个 bash 单行命令”awk '!/well-defined/“来重试该命令。
cert-manager

        Kubeflow 组件使用 cert-manager 来为准入 Webhooks 提供证书。
        Install cert-manager:

kustomize build common/cert-manager/cert-manager/base | kubectl apply -f -
kubectl wait --for=condition=ready pod -l 'app in (cert-manager,webhook)' --timeout=180s -n cert-manager
kustomize build common/cert-manager/kubeflow-issuer/base | kubectl apply -f -

        如果出现如下错误:

Error from server (InternalError): error when creating "STDIN": Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": dial tcp 10.96.202.64:443: connect: connection refused

        这是因为 webhook 尚未准备好接收请求。等待几秒钟,然后重试应用清单。

Istio

        Kubeflow 组件使用 Istio 来保护其流量、强制网络授权和实施路由策略。
        Install Istio:

kustomize build common/istio-1-16/istio-crds/base | kubectl apply -f -
kustomize build common/istio-1-16/istio-namespace/base | kubectl apply -f -
kustomize build common/istio-1-16/istio-install/base | kubectl apply -f -
Dex

        Dex 是一个具有多个身份验证后端的 OpenID Connect Identity (OIDC)。在此默认安装中,它包括一个电子邮件地址为 user@example.com 的静态用户。默认情况下,用户的密码为 12341234。对于任何生产 Kubeflow 部署,您应该按照相关部分更改默认密码。
Install Dex:

kustomize build common/dex/overlays/istio | kubectl apply -f -

        OIDC AuthService
        OIDC AuthService 扩展了您的 Istio Ingress-Gateway 功能,使其能够充当 OIDC 客户端:

kustomize build common/oidc-authservice/base | kubectl apply -f -
Knative

        Knative 由 KServe 官方 Kubeflow 组件提供。
        Install Knative Serving:

kustomize build common/knative/knative-serving/overlays/gateways | kubectl apply -f -
kustomize build common/istio-1-16/cluster-local-gateway/base | kubectl apply -f -

        或者,您可以安装 Knative Eventing,它可用于推理请求日志记录:

kustomize build common/knative/knative-eventing/base | kubectl apply -f -
Kubeflow 命名空间

        创建 Kubeflow 组件所在的命名空间。该命名空间名为 kubeflow。
        install kubeflow namespace:

kustomize build common/kubeflow-namespace/base | kubectl apply -f -
Kubeflow Roles

        创建 Kubeflow ClusterRoles、kubeflow-view、kubeflow-edit 和 kubeflow-admin。 Kubeflow 组件将权限聚合到这些 ClusterRoles。
        Install kubeflow roles:

kustomize build common/kubeflow-roles/base | kubectl apply -f -
Kubeflow Istio Resources

        创建 Kubeflow 所需的 Istio 资源。此 kustomization 当前在命名空间 kubeflow 中创建一个名为 kubeflow-gateway 的 Istio 网关。
        Install istio resources:

kustomize build common/istio-1-16/kubeflow-istio-resources/base | kubectl apply -f -
Kubeflow Pipelines

        安装多用户 Kubeflow Pipelines 官方 Kubeflow 组件:

kustomize build apps/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user | awk '!/well-defined/' | kubectl apply -f -

        不要再使用已弃用且不安全的 PNS 执行器

kustomize build apps/pipeline/upstream/env/platform-agnostic-multi-user-pns | kubectl apply -f -
KServe

        KFServing 更名为 KServe。
        Install the KServe component:

kustomize build contrib/kserve/kserve | kubectl apply -f -

        Install the Models web app:

kustomize build contrib/kserve/models-web-app/overlays/kubeflow | kubectl apply -f -

        ../contrib/kserve/models-web-app/overlays/kubeflow

Katib

        Install the Katib official Kubeflow component:

kustomize build apps/katib/upstream/installs/katib-with-kubeflow | kubectl apply -f -
Central Dashboard

        Install the Central Dashboard official Kubeflow component:

kustomize build apps/centraldashboard/upstream/overlays/kserve | kubectl apply -f -
Admission Webhook

        Install the Admission Webhook for PodDefaults:

kustomize build apps/admission-webhook/upstream/overlays/cert-manager | kubectl apply -f -
Notebooks

        Install the Notebook Controller official Kubeflow component:

kustomize build apps/jupyter/notebook-controller/upstream/overlays/kubeflow | kubectl apply -f -

        Install the Jupyter Web App official Kubeflow component:

kustomize build apps/jupyter/jupyter-web-app/upstream/overlays/istio | kubectl apply -f -
Profiles + KFAM

        Install the Profile Controller and the Kubeflow Access-Management (KFAM) official Kubeflow         components:

kustomize build apps/profiles/upstream/overlays/kubeflow | kubectl apply -f -
Volumes Web App

        Install the Volumes Web App official Kubeflow component:

kustomize build apps/volumes-web-app/upstream/overlays/istio | kubectl apply -f -
Tensorboard

        Install the Tensorboards Web App official Kubeflow component:

kustomize build apps/tensorboard/tensorboards-web-app/upstream/overlays/istio | kubectl apply -f -

        Install the Tensorboard Controller official Kubeflow component:

kustomize build apps/tensorboard/tensorboard-controller/upstream/overlays/kubeflow | kubectl apply -f -
Training Operator

        Install the Training Operator official Kubeflow component:

kustomize build apps/training-operator/upstream/overlays/kubeflow | kubectl apply -f -
User Namespace

        Finally, create a new namespace for the the default user (named kubeflow-user-example-com).

kustomize build common/user-namespace/base | kubectl apply -f -

        安装后,所有Pod都需要一段时间才能准备就绪。在尝试连接之前,请确保所有Pod都已准备好,否则可能会出现意外错误。要检查所有与Kubeflow相关的Pod是否已就绪,请使用以下命令:

kubectl get pods -n cert-manager
kubectl get pods -n istio-system
kubectl get pods -n auth
kubectl get pods -n knative-eventing
kubectl get pods -n knative-serving
kubectl get pods -n kubeflow
kubectl get pods -n kubeflow-user-example-com

        访问 Kubeflow 的默认方式是通过端口转发。这使您能够快速入门,而不会对您的环境提出任何要求。运行以下命令将 Istio 的 Ingress-Gateway 端口转发到本地端口 80

kubectl port-forward svc/istio-ingressgateway -n istio-system 80:80 --address 192.168.61.29

        也可以通过ingress 暴露域名访问或Nginx反向代理访问,建议使用https访问后续创建Notebooks容器组会报错。
        一切就绪,您就可以访问Kubeflow Central Dashboard。
        默认用户名/密码:user@example.com/12341234

修改密码

        ####### 注:一般在部署之前调整或部署 Dex之前调整
        为默认用户user@example.com修改密码,使用bcrypt对密码进行哈希

python3 -c 'from passlib.hash import bcrypt; import getpass; print(bcrypt.using(rounds=12, ident="2y").hash(getpass.getpass()))'

        编辑common/dex/base/config-map.yaml,用上面生产的密码哈希值填充相关字段:

...
  staticPasswords:
  - email: user@example.com
    hash: <enter the generated hash here>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1129850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Html】交通灯问题

效果 实现方式 计时器&#xff1a;setTimeout或setInterval来计时。setInterval和 setTimeout 在某些情况下可能会出现计时不准确的情况。这通常是由于JavaScript的事件循环机制和其他代码执行所需的时间造成的。 问询&#xff1a;通过getCurrentLight将每个状态的持续时间设置…

解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知

文章目录 &#x1f34a; CAP理论&#x1f34a; BASE理论&#x1f34a; 两阶段提交&#xff08;2PC&#xff09;&#x1f389; XA事务 &#x1f34a; 三阶段提交&#xff08;3PC&#xff09;&#x1f34a; 补偿事务&#xff08;TCC&#xff09;&#x1f34a; MQ事务消息&#x1…

web开发初级工程师学习笔记ing(持续更新)!!!

web开发初级工程师学习笔记 前端开发工具实验1 VS Code 初体验介绍 前端开发工具 实验1 VS Code 初体验 介绍 VS Code 环境提供的是一个可以在浏览器中使用原生 VS Code 编辑代码的程序。在该环境中&#xff0c;你可以使用到与本地安装近乎一致的 VS Code 程序来编辑代码文件…

计算机网络(谢希仁)第八版课后题答案(第二章)

1.物理层要解决哪些问题&#xff1f;物理层的主要特点是什么&#xff1f; (1)物理层要尽可能地屏蔽掉物理设备和传输媒体&#xff0c;通信手段的不同&#xff0c;使数据链路层感觉不到这些差异&#xff0c;只考虑完成本层的协议和服务。 (2)给其服务用户&#xff08;数据链路…

IO多路复用技术

IO多路复用 一、概念 IO多路复用技术 是一种 网络通信 的方式&#xff0c;通过这种方式可以同时检测多个 文件描述符&#xff08;这个过程是阻塞的&#xff09;&#xff0c;一旦检测到某一个文件描述符&#xff08;状态是 可读 或者 可写 的&#xff09;是就绪的&#xff0c;…

苏州健雄职业技术学院人工智能学院学生在“火焰杯”软件测试开发选拔赛总决赛获奖

3月22日&#xff0c;第三届“火焰杯”软件测试开发选拔赛颁奖仪式在人工智能学院D2-102机房举行&#xff0c;软件工程20级学生和软件测试社团全体社团成员参加本次活动。本次活动由测吧&#xff08;北京&#xff09;科技有限公司项目总监王雪冬担任颁奖嘉宾&#xff0c;并为同学…

使用Windows平台的Hyper-V虚拟机安装CentOS7的详细过程

Hyper-V虚拟机安装CentOS7 前言常见Linux系统CentOSUbuntuDebianKaliFedoraArch LinuxMintManjaroopenSUSE Hyper-V开启Hyper-V打开Hyper-V Hyper-V的使用新建虚拟机开始安装分区配置开始安装 修改yum源为阿里源 前言 作为一名开发者&#xff0c;就服务器而言&#xff0c;接触最…

SpringMVC 报文信息转换器(HttpMessageConverter)

文章目录 描述1、RequestBody2、RequestEntity3、ResponseBody4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity 描述 HttpMessageConverter&#xff0c;报文信息转换器&#xff0c;将请求报文转换为Java对象&#xff0c;或将Java对象转换为响…

Linux:firewalld防火墙-(实验2)-IP伪装与端口转发(4)

实验环境 本章实验环境要建立在上一章之上&#xff0c;ip等都是继承上一章&#xff0c;完全在上一章之下的操作 Linux&#xff1a;firewalld防火墙-小环境实验&#xff08;3&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/133996151?spm1001.2014.3…

动态链接函数(dlopen/dlsym/dlclose)使用总结

一、简介 动态链接函数操作&#xff08;显式运行时链接&#xff09;主要包含头文件dlfcn.h&#xff08;/usr/include/dlfcn.h&#xff09;&#xff0c;涉及的常用的函数主要有dlopen&#xff0c;dlysm&#xff0c;dlclose。主要作用是从动态库中加载函数到程序中使用&#xff…

shell脚本条件语句(极其粗糙版)

条件测试操作和条件测试语句&#xff1a; $?:条件判断&#xff0c;失败或者成功&#xff0c;真或者假&#xff0c;true false shell脚本中&#xff1a;0为真&#xff0c;true 执行成功&#xff1b;其他所有的非0 都是假&#xff0c; false&#xff0c;执行失败 条件测试的命…

如何禁止员工上班玩游戏

如何禁止员工上班玩游戏 在这个游戏盛行的年代里&#xff0c;不少游戏玩家会玩到忘我的状态&#xff0c;也有不少员工在上班的时候也要玩上两把&#xff0c;但是公司是雇佣员工的时间是来工作的&#xff0c;出现这种情况很显然是对公司不利的&#xff0c;会严重影响工作效率和…

Python print 函数用法总结

Python3 print 函数用法总结 一、print()函数概述 print() 方法用于打印输出&#xff0c;是python中最常见的一个函数。 print([*objects][,seq ][,end\n][,filesys.stdout]) 参数的具体含义如下&#xff1a; objects --表示输出的对象。输出多个对象时&#xff0c;需要用…

MySQL---表的增查改删(CRUD基础)

文章目录 什么是CRUD&#xff1f;新增&#xff08;Create&#xff09;单行数据 全列插入多行数据 指定列插入 查询&#xff08;Retrieve&#xff09;全列查询指定列查询查询字段为表达式起别名查询去重查询排序查询条件查询分页查询 修改&#xff08;Update&#xff09;删除&…

新手如何备考学习PMP?

一、PMP学习7步走攻略 1、熟悉考试大纲&#xff1a; PMP考试大纲是备考的基础&#xff0c;考生需要详细熟悉考试大纲&#xff0c;了解各个知识领域的重点和难点。 2、制定学习计划&#xff1a; 根据考试大纲和个人情况&#xff0c;制定学习计划&#xff0c;合理分配学习时间…

stm32移植u8g2库内存不足解决办法

1.现象 跟着视频教程移植完u8g2库到stm32f103c8t6后&#xff0c;进行编译&#xff0c;报了100多个空间不足的问题&#xff0c;如下图。 ..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching u8g2_fonts.o(.constdata). ..\Outp…

蓝天远控2023(VIP会员版)

蓝天远控2023&#xff08;VIP会员版&#xff09;下载地址&#xff1a;https://user.qzone.qq.com/512526231/main

【逆向】导入表注入

练手的exe链接 链接&#xff1a;https://pan.baidu.com/s/1_87QNHaZYlfY_5uwIRePUQ?pwd6gds 提取码&#xff1a;6gds 原理&#xff1a; 在动态链接库一章提到DllMain&#xff0c;这里再回顾一次 当dll被加载进4GB空间时&#xff0c;会调用一次DllMain&#xff08;入口方法&…

在家制作电子相册一定需要的一款工具

​随着科技的发展&#xff0c;越来越多的人开始喜欢在家制作电子相册&#xff0c;记录自己的生活点滴。那么&#xff0c;如何在家制作电子相册呢&#xff1f; 一款好的工具是必不可少的。可以使用这款工具&#xff0c;轻松上手----FLBOOK在线制作电子杂志平台 1.打开FLBOOK在线…

手撕Vue-实现事件相关指令

经过上一篇文章的学习&#xff0c;实现了界面驱动数据更新&#xff0c;接下来实现一下其它相关的指令&#xff0c;比如事件相关的指令&#xff0c;v-on 这个指令的使用频率还是很高的&#xff0c;所以我们先来实现这个指令。 v-on 的作用是什么&#xff0c;是不是可以给某一个元…