如何在本地安装Kubeflow
回到博客主页

如何在本地安装Kubeflow

MLOps 2023年5月10日

TL;博士:Kubeflow就像Kubernetes之于DevOps一样。了解如何在本地安装它以进行测试,看看它是否适合您。

MLOps,就像它的兄弟DevOps一样,是一个难题。当面对难题时,工程师会怎么做?他们创造工具将这些问题简化为可管理的块。

典型的DevOps问题可以通过使用容器(如Docker)来简化。随着项目使用越来越多的容器,像Kubernetes (k8)这样的容器编排器变得必不可少。随着每个问题的出现,开发人员和工程师创造了令人惊叹的解决方案来简化DevOps。

MLOps正在经历与DevOps类似的成长阵痛。您可以将Docker和k8用于mlop,但它们只能提供到此为止。MLOps就像DevOps的一种特殊形式,因此可能有不同的需求或问题。这就是Kubeflow的用武之地。

图片显示Kubeflow的标志指向MLOps, Kubernetes的标志指向DevOps,两者之间有一个等号。
Kubeflow: MLOps: Kubernetes: DevOps

Kubeflow是什么?

Kubeflow是一个开源平台,旨在简化在Kubernetes上大规模构建和部署机器学习产品的过程。事实上,它建立在k8之上,正如你可以在下面的图中看到它在堆栈中的位置:

这张图显示了Kubeflow组件位于Kubernetes的技术堆栈之上。

Kubeflow提供了一组工具和框架来帮助分布式培训、服务和监控模型。

我可以用Kubeflow做什么?

数据科学家可以在研究和实验阶段使用Kubeflow。它支持直接在K8s集群中运行Jupyter笔记本,为您提供与最终部署相同的硬件。

数据科学家可以使用Kubeflow来训练机器学习模型,使用流行的深度学习框架,如TensorFlow和PyTorch。Kubeflow提供了分布式训练、超参数调优和管理实验的工具。

Kubeflow还可以被机器学习工程师用来部署用于开发、测试和生产的系统。它为他们提供了监控模型性能指标的工具,因此他们可以在发生变化时快速做出反应。

如何安装Kubeflow?

这就是问题所在,不是吗?

很难在网上找到关于本地安装Kubeflow的信息。大多数在线文档都告诉您如何在云服务(如AWS或GCP)上安装Kubeflow。这是有道理的,因为Kubernetes通常会在计算机集群上运行。但是,如果您必须在云中启动K8s集群,那么如何轻松地测试Kubeflow以确定它是否适合您的情况呢?

理想情况下,您可以在本地安装Kubeflow以进行实验和潜在的调试。这就是本指南要告诉你的!

我需要什么才能在本地安装Kubeflow ?

要在本地安装Kubeflow,您需要一些工具。

我们将假设您了解Docker,因为它基本上是使用Kubernetes的先决条件。如果您不熟悉Docker,请查看这个教程让你跟上进度,然后再回来。

由于Kubeflow运行在Kubernetes上,因此您需要能够在本地运行K8s集群。为此,我们转向minikube。Minikube是一个很棒的工具,它允许您在一台机器上快速设置本地集群。它可以在Linux、macOS和Windows上运行。

此外,您还需要以下工具:

  • kubectl,这是一个用于管理K8s集群的命令行工具
  • kustomize使用YAML配置应用程序

使用customize和kubectl,您将能够安装和设置Kubeflow本身,包括一个方便的仪表板来控制Kubeflow。

我们开始吧!

什么是minikube ?我如何安装它?

正如前面提到的,minikube是一个工具,可以帮助在您的机器上本地设置集群。用一点术语来说,你的计算机是单台的节点美国将举办奥运会豆荚。这些pod运行应用程序容器。pod由a管理部署,它描述了Kubernetes应用程序所需的状态。

安装minikube在Linux上,查看他们的工具开始页面。在这里选择操作系统、CPU架构、发布类型和安装类型。例如,安装在运行64位x86处理器的Linux机器上,您可以安装minikube用两个命令:

旋度<https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64>sudo安装minikube-linux-amd64 /usr/local/bin/minikube

第一个命令下载适当的二进制文件,第二个命令将其安装到适当的位置。

kubectl是什么?如何安装它?

kubectl是一个命令行工具,用于控制K8s集群。它自称是一把“瑞士军刀”,“可以做很多事情”。它是管理集群的关键工具。

您有几个安装选项kubectl。检出的安装页面查看您所在平台的指示。

如果你使用快照要管理应用程序包,您可以安装kubectl用一行字:

Sudo snap安装kubectl——经典

但想听个秘密吗?您不需要执行上述任何说明即可进行安装kubectl。为什么?因为minikube可以下载相应版本的kubectl自动为你服务。

如果采用这种方法,命令将略有变化。例如,如果你想列出(获取)在所有命名空间中运行的所有pod,你通常会运行:

我得到豆荚-A

minikube命令看起来像这样:

minikube kubectl——获取pod -A

不过,为了简化操作,您可以将命令别名为:

别名kubectl="minikube kubectl——"

这允许你使用kubectl就像你平时那样。

什么是自定义,如何安装它?

Kubernetes由大量的YAML文件控制。kustomize是一个使定制更容易的工具。它允许您自定义原始的、无模板的YAML文件,同时保持原始的YAML不变和可用。

请查看安装指南找到适合您系统的安装方法。例如,要在Linux上安装,你可以运行:

Curl -s "" | bash sudo install customize /usr/local/bin/ customize

如何安装Kubeflow?

现在您已经安装了必备软件,接下来是主要展示的时候了。

在本地安装Kubeflow最简单的方法是使用Git仓库中的manifest文件。

遵循以下步骤:

  1. 克隆的体现Kubeflow团队的repo:
Git克隆
  1. 切换到repo目录:
cd清单
  1. 为所有Kubeflow组件构建并应用YAML文件:
虽然!定制构建示例| awk '!/ defined/' | kubectl apply -f -;do echo“重试应用资源”;睡眠10;完成
  1. 等待一切尘埃落定。

你可以通过运行命令来检查是否一切都解决了:

我得到豆荚-A

这将列出所有名称空间中的所有pod。只要状态是运行对所有人来说,你都可以走了。如果其中任何一个不是,有时你只需要再等一会儿。你的列表应该是这样的:

命名空间名称准备状态重启AGE auth index -7ff46847-sqxzj 1/1运行0 10h cert-manager cert-manager- cainector -5dfc946d84-m6f7 1/1运行0 10h cert-manager cert-manager-webhook-8744b7588-cvzzm 1/1运行0 10h istio-system authservice-0 1/1运行0 10h istio-ingressgateway-c7fdd4bf6-z68qt 1/1运行0 10h istio-system istio- local-gateway- 675bb7x27 1/1运行0 10h istio-ingressgateway-c7fdd4bf6-z68qt 1/1运行0 10h istio-system istio- 6995577d4-7h6zv1/1 Running 0 10h knative-eventing eventing-controller-86647cbc5b-62tl4 1/1 Running 0 10h knative-eventing eventing-webhook-6f48bb5f4c-c5ljb 1/1 Running 0 10h knative-serving activator-855b695596-zrfrr 2/2 Running 0 10h knative-serving autoscaler-7cbddfc9f7-gjckn 2/2 Running 0 10h knative-serving controller-6657c556fd-q728z 2/2 Running 0 10h knative-serving domain-mapping-544987775c-bffh5 2/2 Running 0 10h knative-serving domainmapping-webhook-6b48bdc856-bmllz 2/2 Running 0 10h knative-serving net-istio-controller-6fbdbd9959-bmglm 2/2 Running 0 10h knative-serving net-istio-webhook-7d4879cd7f-xwsl5 2/2 Running 0 10h knative-serving webhook-665c977469-rw6v6 2/2 Running 0 10h kube-system coredns-787d4945fb-mgpsr 1/1 Running 1 (10h ago) 10h kube-system etcd-minikube 1/1 Running 2 (52s ago) 10h kube-system kube-apiserver-minikube 1/1 Running 1 (10h ago) 10h kube-system kube-controller-manager-minikube 1/1 Running 2 (8h ago) 10h kube-system kube-proxy-l4tvb 1/1 Running 1 (10h ago) 10h kube-system kube-scheduler-minikube 1/1 Running 1 (10h ago) 10h kube-system nvidia-device-plugin-daemonset-cd6h8 1/1 Running 0 10h kube-system storage-provisioner 1/1 Running 2 (10h ago) 10h kubeflow admission-webhook-deployment-6d48f6f745 1/1 Running 53 (10h ago) 10h kubeflow cache-server-6b44c46d47-lvcqr 2/2 Running 0 10h kubeflow centraldashboard-f966d7897-ltjhn 2/2 Running 0 10h kubeflow jupyter-web-app-deployment-795dcd4c9b-r 2/2 Running 0 10h kubeflow katib-controller-746969dc99-2fz29 1/1 Running 53 (10h ago) 10h kubeflow katib-db-manager-5ddbffd67-w429n 1/1 Running 0 10h kubeflow katib-mysql-66c8cdff4f-mrhz9 1/1 Running 0 10h kubeflow katib-ui-58b54d465f-kxmv2 2/2 Running 1 (10h ago) 10h kubeflow kserve-controller-manager-96b896c66-84v 2/2 Running 0 10h kubeflow kserve-models-web-app-9fbcd79f5-xksvx 2/2 Running 0 10h kubeflow kubeflow-pipelines-profile-controller-6 1/1 Running 0 10h kubeflow metacontroller-0 1/1 Running 0 10h kubeflow metadata-envoy-deployment-7b49bdb748-tn 1/1 Running 0 10h kubeflow metadata-grpc-deployment-6d744c66bb-fkt 2/2 Running 3 (10h ago) 10h kubeflow metadata-writer-5bfdbf79b7-b5trj 2/2 Running 0 10h kubeflow minio-549846c488-x7jj6 2/2 Running 0 10h kubeflow ml-pipeline-86d69497fc-mvtb9 2/2 Running 53 (10h ago) 10h kubeflow ml-pipeline-persistenceagent-5789446f9c 2/2 Running 0 10h kubeflow ml-pipeline-scheduledworkflow-fb9fbd76b 2/2 Running 0 10h kubeflow ml-pipeline-ui-74fcbdddd9-sm7dd 2/2 Running 0 10h kubeflow ml-pipeline-viewer-crd-bdf696cb9-97tks 2/2 Running 1 (10h ago) 10h kubeflow ml-pipeline-visualizationserver-845d745 2/2 Running 0 10h kubeflow mysql-5f968h4688-dlgv4 2/2 Running 0 10h kubeflow notebook-controller-deployment-576df594 2/2 Running 2 (10h ago) 10h kubeflow profiles-deployment-7bc6469cdd-r5vzw 3/3 Running 53 (10h ago) 10h kubeflow tensorboard-controller-deployment-84954 3/3 Running 1 (10h ago) 10h kubeflow tensorboards-web-app-deployment-74bc589 2/2 Running 0 10h kubeflow training-operator-7c5456c65-fsqdr 1/1 Running 0 10h kubeflow volumes-web-app-deployment-86dddc89d4-8 2/2 Running 0 10h kubeflow workflow-controller-56cc57796-gjtd9 2/2 Running 1 (10h ago) 10h
来自电视剧《遣散费》的GIF动画,展示了办公室的音乐和舞会。

如何设置Kubeflow仪表板?

一旦Kubeflow启动并运行,您至少需要再执行一个步骤来访问内置仪表板。您需要将正确的端口转发给适当的服务。控件路由的http请求访问仪表板istio-ingressgateway服务于istio-system名称空间。要转发端口,使用kubectl

Kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80

这告诉集群监听端口8080并将其转发到端口上的服务80。你可以在http://localhost:8080

显示登录Kubeflow仪表板的屏幕截图。已输入默认邮箱地址和密码

默认用户名为user@example.com密码是12341234。登录后,您将看到Kubeflow仪表板。

显示Kubeflow仪表板默认视图的屏幕截图。

从这里你可以退房Kubeflow的组件文档以了解有关仪表板的更多信息以及如何开始使用它。

我怎样才能停止一切?

你可以停止你正在运行的一切minikube

minikube停止

但请记住,这不会删除Kubeflow集群。它只是阻止了它。下次你跑步的时候minikube开始,它将尝试重新启动所有Kubeflow pod和服务。

如果你想删除你的Kubeflow集群,运行:

minikube删除

故障排除

一些豆荚的状态为CrashLoopBackoff

首先,再等一会儿。有时需要好几分钟才能安顿下来。如果你等待的时间比你开车的时间还长,

Kubectl日志 -n 

如果你看到这样的东西:

错误:打开的文件太多

您可以通过运行以下命令来修复它:

执行命令sysctl fs. notify。sudo sysctl fs.inotify.max_user_watches=655360 . Max_user_instances =1280

然后再等待重试。


恭喜你!现在您已经在本地机器上设置了Kubeflow !为此,您已经安装并了解了以下内容:

  • minikube
  • kubectl(可选)
  • kustomize

这是一个巨大的成就,也是了解更多Kubeflow(以及Kubernetes)的一个很好的开始。

准备好在不止一台机器上运行Kubeflow了吗?在下一篇文章中,我们将向您展示如何将Kubeflow设置为在AWS上运行!

如果你有任何问题,请随时联系我。你可以加入我们的不和在美国,我们建立了一个充满活力、乐于助人、友好的社区。

标签

太棒了!您已成功订阅。
太棒了!接下来,完成签出以获得完全访问权限。
欢迎回来!您已成功登录。
成功!您的帐户已完全激活,您现在可以访问所有内容。