如何在本地安装Kubeflow
TL;博士:Kubeflow就像Kubernetes之于DevOps一样。了解如何在本地安装它以进行测试,看看它是否适合您。
MLOps,就像它的兄弟DevOps一样,是一个难题。当面对难题时,工程师会怎么做?他们创造工具将这些问题简化为可管理的块。
典型的DevOps问题可以通过使用容器(如Docker)来简化。随着项目使用越来越多的容器,像Kubernetes (k8)这样的容器编排器变得必不可少。随着每个问题的出现,开发人员和工程师创造了令人惊叹的解决方案来简化DevOps。
MLOps正在经历与DevOps类似的成长阵痛。您可以将Docker和k8用于mlop,但它们只能提供到此为止。MLOps就像DevOps的一种特殊形式,因此可能有不同的需求或问题。这就是Kubeflow的用武之地。

Kubeflow是什么?
Kubeflow是一个开源平台,旨在简化在Kubernetes上大规模构建和部署机器学习产品的过程。事实上,它建立在k8之上,正如你可以在下面的图中看到它在堆栈中的位置:
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上运行。
此外,您还需要以下工具:
使用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文件。
遵循以下步骤:
- 克隆的体现Kubeflow团队的repo:
Git克隆
- 切换到repo目录:
cd清单
- 为所有Kubeflow组件构建并应用YAML文件:
虽然!定制构建示例| awk '!/ defined/' | kubectl apply -f -;do echo“重试应用资源”;睡眠10;完成
- 等待一切尘埃落定。
你可以通过运行命令来检查是否一切都解决了:
我得到豆荚-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

如何设置Kubeflow仪表板?
一旦Kubeflow启动并运行,您至少需要再执行一个步骤来访问内置仪表板。您需要将正确的端口转发给适当的服务。控件路由的http请求访问仪表板istio-ingressgateway
服务于istio-system
名称空间。要转发端口,使用kubectl:
Kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
这告诉集群监听端口8080
并将其转发到端口上的服务80
。你可以在http://localhost:8080。

默认用户名为user@example.com密码是12341234。登录后,您将看到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上运行!
如果你有任何问题,请随时联系我。你可以加入我们的不和在美国,我们建立了一个充满活力、乐于助人、友好的社区。