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的状态。
