如何在1.18版本的TKE集群中搭建kubeflow环境

2020-12-21 17:14:51 浏览数 (1)

一、什么是kubeflow?

以下是来自Kubeflow的官网翻译:

Kubeflow项目致力于使机器学习(ML)工作流在Kubernetes环境达到部署简单,可移植且可扩展的目的。Kubeflow的目标不是重新创建其他服务,而是提供一种直接的方式来将机器学习(ML)的同类最佳的开源系统部署到各种Kubernetes环境的基础结构中。Kubeflow项目希望在运行Kubernetes的任何地方,您都应该能够轻松、快速的运行Kubeflow。

二、TKE环境准备

1、创建一个1.18版本的TKE集群

按照TKE官方参考文档,创建好集群。

NT:注意这里安装Kubeflow需要特殊开启部分APIserver的自定义参数,而TKE的托管集群不支持修改APIserver参数,所以这里我们需要创建独立集群,以方便后续自定义我们的环境。

2、准备Kubeflow的运行环境

APIserver开启对TokenRequest特性的支持。在APIserver的启动参数(配置文件路径:/etc/kubernetes/manifest/kube-apiserver.yaml)中加上

代码语言:javascript复制
--service-account-signing-key-file=/etc/kubernetes/ca.key
# /etc/kubernetes/ca.key为TKE集群证书key所在路径
--service-account-issuer=kubernetes.default.svc
# kubernetes.default.svc可自行修改

为所有组件(APIserver、kube-controller-manager、kube-scheduler、kube-proxy、kubelet)开启TokenRequest特性。在各组件的启动参数加上

代码语言:javascript复制
--feature-gates=TokenRequest=true
# kube-controller-manager、kube-scheduler的配置文件路径为/etc/kubernetes/manifest
# kube-proxy 修改仅需要kubectl edit daemonset kube-proxy -n kube-system然后在启动参数加上即可
# kubelet 通过systemctl status kubelet查看kubelet的配置文件具体路径(master节点和node节点路径有出入),然后在配置文件中加上对应配置随后重启即可。

三、部署Kubeflow

这里安装的版本为v1.2.0。后续有出入自行调整。

1、下载kfctl工具
代码语言:javascript复制
wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0-gbc038f9_linux.tar.gz
​
# 资源的链接为:https://github.com/kubeflow/kfctl/releases
2、部署前准备
代码语言:javascript复制
# 1、准备好kfctl工具
tar -xvf kfctl_v1.2.0-0-gbc038f9_linux.tar.gz && mv kfctl /usr/local/bin
​
# 2、准备安装目录
export KF_NAME=<用来放Kubeflow deployment yaml配置的文件目录>
​
export BASE_DIR=<path to a base directory>
export KF_DIR=${BASE_DIR}/${KF_NAME}
​
# 配置yaml资源URL
export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.2-branch/kfdef/kfctl_k8s_istio.v1.2.0.yaml"
3、开始部署Kubeflow
代码语言:javascript复制
mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl apply -V -f ${CONFIG_URI}
4、查看是否部署成功
代码语言:javascript复制
kubectl -n kubeflow get all
​
# 如果有部分pod异常,可以kubectl describe排查下具体错误原因。

四、部署遇到的问题总结

1、更改/etc/kubernetes/manifest/kube-apiserver.yaml配置文件报错

部署过程中经常遇到修改各组件配置文件报错的问题,但是配置反复确认是没问题的。最终排查为配置中格式存在问题,所以建议在配置过程中尽量参考官方文档的配置,避免配置出错。

2、部署过程中发下有相关DB的pod启动失败

原因为准备测试集群环境是node节点全部在一个可用区(硅谷一区),而storageclass使用的可用区为硅谷二区。导致申请pv的时候失败。建议后续在准备node的时候混合可用区,保持高可用性。

3、部署使用的镜像均为国外镜像

考虑到国内网络环境,这边测试时选择了国外环境(硅谷地域)的集群来避免此问题。国内用户可以将镜像提前下载转移到国内的镜像仓库,然后修改部署配置中的镜像地址来部署Kubeflow。

0 人点赞