更新时间:2022-05-10 GMT+08:00
分享

Kubeflow部署

本实践作为kubeflow在华为云CCE上部署、使用的流程说明,介绍了kubeflow的详细部署过程,使用kubeflow构建简单的tensorflow训练任务,并对比了GPU单卡/多卡场景下不同的训练性能。

本实践部署过程参考https://bbs.huaweicloud.com/blogs/413d1821c1a211e89fc57ca23e93a89f以及官方文档https://www.kubeflow.org/docs/started/getting-started/

预置条件

  • 已在CCE创建一个集群clusterA,集群下有一个可用GPU节点,节点上的GPU卡数量大于等于2。
  • 节点上绑定了EIP,并配置了kubectl命令行工具。

安装ksonnet

可在https://github.com/ksonnet/ksonnet/releases/中查看最新版本,当前最新版本v0.13.1,安装过程如下:

export KS_VER=0.13.1 
export KS_PKG=ks_${KS_VER}_linux_amd64 
wget -O /tmp/${KS_PKG}.tar.gz 
https://github.com/ksonnet/ksonnet/releases/download/v${KS_VER}/${KS_PKG}.tar.gz 
mkdir -p ${HOME}/bin 
tar -xvf /tmp/$KS_PKG.tar.gz -C ${HOME}/bin 
cp ${HOME}/bin/$KS_PKG/ks /usr/local/bin

下载kfctl.sh

执行如下命令:

export KUBEFLOW_SRC=/home/kubeflow_src
mkdir ${KUBEFLOW_SRC} 
cd ${KUBEFLOW_SRC}
export KUBEFLOW_TAG=v0.4.1 

curl 
https://raw.githubusercontent.com/kubeflow/kubeflow/${KUBEFLOW_TAG}/scripts/download.sh | bash
  • KUBEFLOW_SRC是kubeflow文件夹的下载目录。
  • KUBEFLOW_TAG是指kubeflow的版本,例如选择v0.4.1。

配置Docker代理(可选)

由于国内网络原因,部分镜像无法拉取下来,这里采用给容器所在的节点上的docker配置proxy的方式来下载这些镜像。

mkdir -p /etc/systemd/system/docker.service.d 
vi /etc/systemd/system/docker.service.d/http-proxy.conf 
[Service] 
Environment="HTTP_PROXY=http://proxy.example.com:80/" 
"HTTPS_PROXY=http://proxy.example.com:80/"

这里的地址{proxy.example.com:80}需要改为实际可用的代理地址,退出vi后执行如下命令使代理生效:

systemctl daemon-reload 
systemctl restart docker

执行如下命令确认docker代理生效:

systemctl show --property=Environment docker

部署kubeflow

执行如下命令:

${KUBEFLOW_SRC}/scripts/kfctl.sh init ${KFAPP} --platform none 
cd ${KFAPP} 
${KUBEFLOW_SRC}/scripts/kfctl.sh generate k8s 
${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s
  • KFAPP是指kubeflow的deployment对应的名字。

执行完毕后可以通过kubectl get po -n kubeflow查看相关资源是否正常启动。由于存储还未配置,所以存在部分Pod仍未running,下面将详细说明。

配置kubeflow所需存储

Kubeflow v0.4.1的运行依赖于如下存储的创建:

  • katib-mysql
  • mysql-pv-claim
  • minio-pv-claim

因此需要在CCE的存储管理页面选择指定集群clusterA,创建如下三个存储,创建时需选择命名空间kubeflow。

创建完毕后,修改如下三个deployment的volume-name字段。

kubectl edit deploy minio –nkubeflow 
:%s/minio-pv-claim/cce-sfs-kubeflow-minio/g 
:wq!
kubectl edit deploy mysql –nkubeflow 
:%s/mysql-pv-claim/cce-sfs-kubeflow-mysql/g 
:wq!
kubectl edit deploy vizier-db –nkubeflow 
:%s/katib-mysql/cce-sfs-kubeflow-katib/g 
:wq

等待一段时间后,可以看到所有的Pod均为running的状态。

分享:

    相关文档

    相关产品

close