Kubernetes 部署 kubeflow1.7.0

news/2024/7/5 2:41:48

        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://lihuaxi.xjx100.cn/news/1719378.html

相关文章

Nodejs和Node-red的关系

NPM相关知识 npm概念 npm&#xff1a;Node Package Manager&#xff0c;Node包管理器。是Node.js默认的&#xff0c;以JavaScript编写的软件包管理系统。 npm工作原理 npm的操作原理是各个官网使用npm publish把代码提交到npm的服务器&#xff0c;其他人想要使用这些代码&am…

高数基础常用公式(持续更新)

1、求根公式 2、三角函数特殊度数对应值 3、三角函数常用公式

迎重阳,话养老:平安养老险如何助力国民“养老梦”?

10月23日&#xff0c;我们将迎来传统节日重阳节&#xff0c;又称敬老节&#xff0c;自古就有祭祖、登高、赏菊三大风俗&#xff0c;流传至今&#xff0c;已成为人们孝老敬老的重要节日。 随着老龄化日益加深&#xff0c;在“敬老”的同时如何“备老”成为人民群众长期热议的话题…

易点易动固定资产管理系统:高效盘点海量固定资产的得力助手

固定资产是企业重要的财务资源之一&#xff0c;盘点是保证固定资产准确性和完整性的关键环节。然而&#xff0c;对于拥有海量固定资产的企业来说&#xff0c;传统的手工盘点方式效率低下且容易出错。为了解决这一难题&#xff0c;易点易动固定资产管理系统应运而生。本文将深入…

Python必学函数:常用内置函数详解和举例分析

map函数 是根据第一个参数定义的函数&#xff0c;依次作用在序列上&#xff0c;返回一个迭代器 s 1,2,3,4,5 # 将字符串转换成整数列表 list(map(int, s.split(,))) # [1,2,3,4,5]# 求两个连表中元素的和&#xff0c;放入新列表中 data1 [1,2,3] data2 [4,5,6] list(map(l…

应届生如何找到适合自己的项目

去开源网站 搜索技术点项目, 按照星级排序 不要只是跟着敲代码 那样什么都学不到,脑子是停转的 要自己理解业务流程,然后自己先试着实现,简单的crud要会,复杂的肯定会遇到问题,这个时候再去参考他给的代码 选择以下比较通用的业务来深度耕耘 模块如何吃透 例如权限认证: 功能实…

uniapp编译微信小程序富文本rich-text的图片样式不生效原因

this.detail.contents this.detail.contents.replace(/\<img/gi, <img style"display:block;max-width:90%;height:auto;border:2px solid #eee;box-shadow:5px 5px 5px rgba(100,100,100,0.8);margin-bottom:10px;text-align:center;" );开始采用这个replace…

中国大学MOOC工程招投标与合同管理答案

本文转载自 众课帮 公众号 1、下列关于《招标投标法》适用范围的说法中&#xff0c;正确的是( ) A、适用于我国境内进行的招标投标活动 B、适用于境外进行的招标投标活动 C、只适用于我国境内进行的工程建设项目的招标投标活动 D、使用国际组织贷款的项目也必须适用 答案&…