手把手教你搭建Kubeflow——基于K8s的机器学习平台

文章有些长,建议先关注、收藏再阅读:

简介

Kubeflow是在k8s平台之上针对机器学习的开发、训练、优化、部署、管理的工具集合,内部集成的方式融合机器学习中的很多领域的开源项目,比如Jupyter、tfserving、Katib、Fairing、Argo等。可以针对机器学习的不同阶段:数据预处理、模型训练、模型预测、服务管理等进行管理。

一、基础环境准备

k8s版本:v1.20.5

docker版本:v19.03.15

kfctl版本:v1.2.0-0-gbc038f9

kustomize版本:v4.1.3

我也不确定到底能否在1.20.5的k8s版本上完全兼容kubeflow 1.2.0版本。现在只是测试。

版本兼容性可参考:https://www.kubeflow.org/docs/distributions/kfctl/overview#minimum-system-requirements

1、安装kfctl

kfctl 是用于部署和管理 Kubeflow 的控制平面。主要的部署模式是使用 kfctl 作为 CLI,为不同的 Kubernetes 风格配置 KFDef 配置来部署和管理 Kubeflow。

wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0-gbc038f9_linux.tar.gz
tar -xvf kfctl_v1.2.0-0-gbc038f9_linux.tar.gz
chmod 755 kfctl
cp kfctl /usr/bin
kfctl version

2、安装kustomize

Kustomize 是一种配置管理解决方案,它利用分层来保留应用程序和组件的基本设置,方法是覆盖声明性 yaml 工件(称为补丁),这些工件有选择地覆盖默认设置而不实际更改原始文件。

下载地址:https://github.com/kubernetes-sigs/kustomize/releases

wget https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv4.1.3/kustomize_v4.1.3_linux_amd64.tar.gz
tar -xzvf kustomize_v4.1.3_linux_amd64.tar.gz
chmod 755 kustomize
mv kustomize /use/bin/
kustomize version

三、基于公网的部署

如果你的服务器能够访问外网。就可直接执行安装部署。

本次测试部署使用的阿里云美国西部1(硅谷)的机器。

1、创建kubeflow的工作目录

mkdir /apps/kubeflow
cd /apps/kubeflow

2、配置storageclass

# cat storageclass.yaml 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  volumeAs: subpath
  server: "*********.us-west-1.nas.aliyuncs.com:/nasroot1/"  #这里使用的是阿里的NAS存储
  archiveOnDelete: "false"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain

3、设置为默认的storageclass

# kubectl get sc
NAME                       PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
alicloud-nas               nasplugin.csi.alibabacloud.com    Retain          Immediate              false                  24h

# 为false时为关闭默认
# kubectl patch storageclass alicloud-nas -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

# kubectl get sc
NAME                       PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
alicloud-nas (default)     nasplugin.csi.alibabacloud.com    Retain          Immediate              false                  24h

4、安装部署

wget https://raw.githubusercontent.com/kubeflow/manifests/v1.2-branch/kfdef/kfctl_k8s_istio.v1.2.0.yaml
kfctl apply -V -f kfctl_k8s_istio.v1.2.0.yaml

等所有pod都创建成功后检查各个pod

保证以下所有的pod都是Running状态。

# kubectl get pods -n cert-manager
NAME                                       READY   STATUS    RESTARTS   AGE
cert-manager-7c75b559c4-c2hhj              1/1     Running   0          23h
cert-manager-cainjector-7f964fd7b5-mxbjl   1/1     Running   0          23h
cert-manager-webhook-566dd99d6-6vvzv       1/1     Running   2          23h

# kubectl get pods -n istio-system
NAME                                                         READY   STATUS      RESTARTS   AGE
cluster-local-gateway-5898bc5c74-822c9                       1/1     Running     0          23h
cluster-local-gateway-5898bc5c74-b5tmr                       1/1     Running     0          23h
cluster-local-gateway-5898bc5c74-fpswf                       1/1     Running     0          23h
istio-citadel-6dffd79d7-4scx7                                1/1     Running     0          23h
istio-galley-77cb9b44dc-6l4lm                                1/1     Running     0          23h
istio-ingressgateway-7bb77f89b8-psqcm                        1/1     Running     0          23h
istio-nodeagent-5qsmg                                        1/1     Running     0          23h
istio-nodeagent-ccc8j                                        1/1     Running     0          23h
istio-nodeagent-gqrsl                                        1/1     Running     0          23h
istio-pilot-67d94fc954-vl2sx                                 2/2     Running     0          23h
istio-policy-546596d4b4-6ct59                                2/2     Running     1          23h
istio-security-post-install-release-1.3-latest-daily-qbrf6   0/1     Completed   0          23h
istio-sidecar-injector-796b6454d9-lv8dg                      1/1     Running     0          23h
istio-telemetry-58f9cd4bf5-8cjj5                             2/2     Running     1          23h
prometheus-7c6d764c48-s29kn                                  1/1     Running     0          23h

# kubectl get pods -n knative-serving
NAME                                READY   STATUS    RESTARTS   AGE
activator-6c87fcbbb6-f4cs2          1/1     Running   0          23h
autoscaler-847b9f89dc-5jvml         1/1     Running   0          23h
controller-55f67c9ddb-67vvc         1/1     Running   0          23h
istio-webhook-db664df87-jn72n       1/1     Running   0          23h
networking-istio-76f8cc7796-9jr2j   1/1     Running   0          23h
webhook-6bff77594b-2r2gx            1/1     Running   0          23h

# kubectl get pods -n kubeflow
NAME                                                     READY   STATUS    RESTARTS   AGE
admission-webhook-bootstrap-stateful-set-0               1/1     Running   4          23h
admission-webhook-deployment-5cd7dc96f5-fw7d4            1/1     Running   2          23h
application-controller-stateful-set-0                    1/1     Running   0          23h
argo-ui-65df8c7c84-qwtc8                                 1/1     Running   0          23h
cache-deployer-deployment-5f4979f45-2xqbf                2/2     Running   2          23h
cache-server-7859fd67f5-hplhm                            2/2     Running   0          23h
centraldashboard-67767584dc-j9ffz                        1/1     Running   0          23h
jupyter-web-app-deployment-8486d5ffff-hmbz4              1/1     Running   0          23h
katib-controller-7fcc95676b-rn98v                        1/1     Running   1          23h
katib-db-manager-85db457c64-jx97j                        1/1     Running   0          23h
katib-mysql-6c7f7fb869-bt87c                             1/1     Running   0          23h
katib-ui-65dc4cf6f5-nhmsg                                1/1     Running   0          23h
kfserving-controller-manager-0                           2/2     Running   0          23h
kubeflow-pipelines-profile-controller-797fb44db9-rqzmg   1/1     Running   0          23h
metacontroller-0                                         1/1     Running   0          23h
metadata-db-6dd978c5b-zzntn                              1/1     Running   0          23h
metadata-envoy-deployment-67bd5954c-zvpf4                1/1     Running   0          23h
meta
  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
TMS320F28335是德州仪器(TI)推出的一款数字信号处理器(DSP),用于实现各种实时控制和信号处理应用。学习DSP需要掌握相关的基本知识和编程技巧。 首先,我们可以通过阅读TMS320F28335的官方文档,即TMS320F28335的PDF手册。该手册详细介绍了DSP的硬件架构、指令集、寄存器和外设等内容。通过仔细阅读和理解手册,我们可以全面掌握DSP的基本结构和工作原理。 其次,我们可以选择一个合适的开发环境,如Code Composer Studio(CCS),这是TI为DSP开发提供的集成开发环境。在CCS,我们可以创建新的项目并配置编译器和调试器。通过CCS集成的调试功能,我们可以方便地调试和验证自己的DSP程序。 为了更好地学习DSP,我们可以按照以下步骤进行实践: 1.了解DSP的基本概念和数学原理,如离散傅里叶变换(DFT)、离散时间傅里叶变换(DTFT)等。 2.学习DSP的编程语言,如C语言或汇编语言。TI提供了DSP的编程工具包,可以帮助我们编写和调试DSP程序。 3.选择合适的实例或项目来进行实践。可以通过加载预定义的DSP库函数或手动编写代码来实现信号滤波、变换、调制等功能。 4.通过仿真和调试,验证自己的程序是否符合预期。根据调试结果进行修改和改进,直到达到要求。 5.不断学习和积累经验,参考相关的书籍和程,学习其他高级的DSP算法和应用。 总之,学习DSP需要理论和实践相结合。通过阅读TMS320F28335的官方文档,配置开发环境,学习基本概念和编程语言,进行实践和调试,我们可以逐步掌握DSP的原理和应用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值