首页 > 其他分享 >KubeFlow1.7.0部署

KubeFlow1.7.0部署

时间:2023-07-13 18:11:44浏览次数:43  
标签:kustomize kubectl KubeFlow1.7 部署 kubeflow build Kubeflow apply

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
一键部署命令

测试环境信息:
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)。在此默认安装中,它包括一个电子邮件地址为 [email protected] 的静态用户。默认情况下,用户的密码为 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。
默认用户名/密码:[email protected]/12341234

修改密码

####### 注:一般在部署之前调整或部署 Dex之前调整
为默认用户[email protected]修改密码,使用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: [email protected]
    hash: <enter the generated hash here>

官方文档:https://github.com/kubeflow/manifests/tree/v1.7.0





标签:kustomize,kubectl,KubeFlow1.7,部署,kubeflow,build,Kubeflow,apply
From: https://www.cnblogs.com/shunzi115/p/17551751.html

相关文章

  • docker-compose部署若依
    1、通过Dockerfile构建:jar镜像1.1、application.yaml(要注意的地方)#项目相关配置ruoyi:profile:/home/javaProject/profile#文件上传地址:自己写自己linux路径#开发环境配置server:#服务器的HTTP端口,默认为8080->注意端口port:8080#用户配置user:......
  • 使用nuxtjs静态部署时报错TypeError: renderContext.renderResourceHints is not a fu
    在使用nuxt框架进行静态打包部署时候每次总会有一两个界面报TypeError:renderContext.renderResourceHintsisnotafunction的错误 一开始以为是asyncData中获取的数据有问题,在各种排查后返现数据没问题,再次编译还是会有错误,最后甚至把asyncdata方法给删除掉都还是有这个错......
  • (二)kubernetes部署kafka
    与前面的zookeeper一样需要持久化存储,因此还是先创建PV,然后再部署kafka。2、配置nfs创建需要作为nfs共享的目录mkdir/home/nfs/kafka-0添加权限chmod777/home/nfs/kafka-0编辑配置root@ubuntu:#vim/etc/export#/etc/exports:theaccesscontrollistforfilesyste......
  • nginx部署 vue3 同时 配置接口代理(详细)
    Vue项目配置.env文件在项目根目录下创建文件夹(.env.production)##.env.production生产环境配置VUE_APP_SYS_URL=sysapi##nginx需要用的的代理表示VUE_APP_MODE=product##模式baseUrl使用VUE_APP_SYS_URL变量代替Nginx下载部署和配置api代理Nginx下载......
  • IIS部署createWebHistory路由模式的Vue项目
    接口使用NetCore,前端使用Vue3.+网站部署目录如下api(虚拟应用程序)webindex.html需要在服务器上按照URLRewrite下载地址:https://www.iis.net/downloads/microsoft/url-rewrite安装后在网站根目录下创建“web.config”文件,内容如下<?xmlversion="1.0"encoding="UTF-8"?......
  • Jenkins远程管理K8S集群实现自动POD部署
    Jenkins远程管理K8S集群实现自动POD部署大致思路修改.kube/config文件,增加新集群的context建立隧道将集群控制端口映射到Jenkins服务器本地端口测试jenkin切换到新context是否能控制该集群新集群配置对接Harbor仓库测试helm部署podJenkins测试配置流水线自动发版1.......
  • Windows系统使用Nginx部署Vue
    Nginx是什么?Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。优点速度更快、并发更高......
  • xxl-job部署
    XXL-JOB安装、配置、启动、停止教程安装xxl-jobstep1:上传step2:解压step3:初始化数据库step4:修改xxl-job配置文件step4.1:修改调度中心配置文件application.propertiesstep4.2:修改logback.xml(配置xxl-job的日志路径)step4.3:修改执行器配置文件application.propertiesstep4.4:修改logb......
  • jenkins部署及gitlab联调
    jenkins部署及gitlab联调目录jenkins部署及gitlab联调一、jenkins安装1.环境优化2.安装jdkjava环境3.下载jenkins4.启动Jenkins服务5.上个步骤执行成功后,会弹出下面的对话框,我们点击关闭即可6.Jenkins的目录介绍7.修改Jenkins密码二、Jenkins插件安装实战篇1.点击系统管理2>.......
  • HCIP-进阶实验07-高可靠性园区网部署
    HCIP-进阶实验07-高可靠性园区网部署1实验需求1.1实验拓扑1.2实验环境说明设备接口IP地址备注AR1G0/0/0172.16.1.1/24G0/0/1172.16.2.1/24loopback0202.22.2.2/24ISPSW1VLANIF10192.168.1.254/24VLANIF20192.168.2.253/24......