前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在1.18版本的TKE集群中搭建kubeflow环境

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

原创
作者头像
baron_王龙
发布2020-12-21 17:14:51
1.6K0
发布2020-12-21 17:14:51
举报

一、什么是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。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是kubeflow?
  • 二、TKE环境准备
    • 1、创建一个1.18版本的TKE集群
      • 2、准备Kubeflow的运行环境
      • 三、部署Kubeflow
        • 1、下载kfctl工具
          • 2、部署前准备
            • 3、开始部署Kubeflow
              • 4、查看是否部署成功
              • 四、部署遇到的问题总结
                • 1、更改/etc/kubernetes/manifest/kube-apiserver.yaml配置文件报错
                  • 2、部署过程中发下有相关DB的pod启动失败
                    • 3、部署使用的镜像均为国外镜像
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档