cube-studio/install/kubernetes
YueXin Chen a6d93f5bed
Update&Fix readme.md
The language expression logic of most texts has been improved, some necessary content has been updated, and some textual expressions without coherence and pictures have been deleted.
完善了大部分文本的语言表述逻辑,更新了一些必要的内容,删除了一些没有连贯性的,没有图片的文字性表述
2022-09-15 10:34:22 +08:00
..
argo add doc 2022-05-10 11:52:23 +08:00
ceph deploy 2021-08-17 17:00:34 +08:00
cube add bigdata jupyter 2022-09-11 20:33:52 +08:00
dashboard fix deploy config 2021-12-07 20:57:00 +08:00
frameworkcontroller add mxjob/paddlejob config and deploy 2022-08-16 11:09:18 +08:00
gpu add gpu doc 2022-08-18 15:17:05 +08:00
istio support k8s 1.22 2022-09-13 20:02:46 +08:00
kube-batch fix crd version 2022-08-18 15:17:21 +08:00
kubeflow support k8s 1.22 2022-09-11 20:34:09 +08:00
mysql add stand-alone deployment 2022-04-24 14:35:13 +08:00
paddle add mxjob/paddlejob config and deploy 2022-08-16 11:09:18 +08:00
prometheus support k8s 1.22 2022-09-11 20:34:09 +08:00
rancher Update&Fix readme.md 2022-09-15 10:34:22 +08:00
redis update deploy 2022-05-20 11:03:35 +08:00
spark 更新部署镜像 2022-07-27 12:55:35 +08:00
tmeps 修改镜像仓库地址 2022-06-08 16:47:57 +08:00
volcano fix crd version 2022-08-18 15:17:21 +08:00
all_image.py fix deploy 2022-09-11 11:29:29 +08:00
create_ns_secret.sh add sidecar and service monitoring 2022-08-19 16:45:59 +08:00
gateway.yaml 独立部署istio 2022-07-15 11:51:50 +08:00
ingress.yaml add user edit args 2022-08-27 21:35:04 +08:00
init_node.sh fix deploy 2022-08-23 16:47:29 +08:00
install_docker.sh 添加内网部署镜像打包 2022-07-10 17:29:21 +08:00
ns.yaml deploy 2021-08-17 17:00:34 +08:00
pull_image_kubeflow.sh fix deploy 2022-09-11 11:29:29 +08:00
pv-pvc-infra.yaml deploy 2021-08-17 17:00:34 +08:00
pv-pvc-jupyter.yaml deploy 2021-08-17 17:00:34 +08:00
pv-pvc-katib.yaml deploy 2021-08-17 17:00:34 +08:00
pv-pvc-kubeflow.yaml deploy 2021-08-17 17:00:34 +08:00
pv-pvc-pipeline.yaml update install 2022-02-26 22:36:40 +08:00
pv-pvc-service.yaml deploy 2021-08-17 17:00:34 +08:00
readme.md update deploy 2022-05-18 20:40:26 +08:00
sa-rbac.yaml deploy 2021-08-17 17:00:34 +08:00
scheduler-policy-config.json update cube deploy 2021-09-07 18:09:09 +08:00
start.sh support k8s 1.22 2022-09-13 20:02:46 +08:00
virtual.yaml 更新部署方式 2022-07-27 13:01:36 +08:00

机器/k8s环境/ceph环境准备

机器环境准备准备docker准备rancher部署k8s。如果已经有可以忽略没有可以参考rancher/readme.md

如果使用tke选择独立集群(非托管集群)这样方便自行管理api server启动参数部署istio

单机测试

在单机上将k8s的kubeconfig文件保存为 cube-studio/install/kubernetes/config下面的命令换成自己的机器ip

cd cube-studio/install/kubernetes/
sh start.sh xx.xx.xx.xx

单机部署参考视频

通过label进行机器管理

开发训练服务机器管理:

  • 对于cpu的train/notebook/service会选择cpu=true的机器

  • 对于gpu的train/notebook/service会选择gpu=true的机器

  • 训练任务会选择train=true的机器

  • notebook会选择notebook=true的机器

  • 服务化会选择service=true的机器

  • 不同项目的任务会选择对应org=xx的机器。默认为org=public

  • 可以通过gpu-type=xx表示gpu的型号

控制器机器管理:

  • mysql=true 部署mysql服务的机器
  • redis=true 部署mysql服务的机器
  • kubeflow-dashobard=true 部署cube服务的机器
  • kubeflow=true 部署kubeflow的机器
  • isito=true 部署istio的机器
  • knative=true 部署knative的机器
  • monitoring=true 部署prometheus的机器

分布式存储

目前机器学习平台依赖强io性能的分布式存储。 建议使用ssd的ceph作为分布式存储。并注意配置好开机自动挂载避免在机器重启后挂载失效

!!!重要:分布式文件系统需要挂载到每台机器的/data/k8s/下面,当然也可以挂载其他目录下,以软链的形式链接到/data/k8s/下

需要每台机器都有对应的目录/data/k8s为分布式存储目录

mkdir -p /data/k8s/kubeflow/minio  
mkdir -p /data/k8s/kubeflow/global  
mkdir -p /data/k8s/kubeflow/pipeline/workspace  
mkdir -p /data/k8s/kubeflow/pipeline/archives  

平台pvc会使用这些分布式存储目录下的subpath所以如果你是rancher部署k8s集群需要在kubelet容器中挂载主机的/data/k8s/目录到kubelet容器的/data/k8s/目录。 rancher修改kubelet容器挂载目录(选中集群-升级-编辑yaml)

    kubelet:
      extra_binds:
        - '/data/k8s:/data/k8s'

gpu环境的准备

1、找运维同学在机器上安装gpu驱动
2、安装nvidia docker2k8s没有支持新版本docker的--gpu
3、修改docker配置文件

cat /etc/docker/daemon.json  
  
{  
    "insecure-registries":["docker.oa.com:8080"],  
    "default-runtime": "nvidia",  
    "runtimes": {  
        "nvidia": {  
            "path": "/usr/bin/nvidia-container-runtime",  
            "runtimeArgs": []  
        }  
    }  
}  

如果是内网部署,需要先把镜像传递到私有仓库,再从私有仓库拉取到每台机器上

sh pull_image_kubeflow.sh  

创建命名空间、秘钥(有私有仓库,自己添加)

将本地的~/.kube/config文件换成将要部署的集群的kubeconfig

修改里面的docker hub拉取账号密码  
sh create_ns_secret.sh  

部署k8s-dashboard

新版本的k8s dashboard 可以直接开放免登陆的http且可以设置url前缀代理

kubectl apply -f dashboard/v2.2.0-cluster.yaml  
kubectl apply -f dashboard/v2.2.0-user.yaml  

部署元数据组件mysql

参考mysql/readme.md

部署缓存组件redis

参考redis/readme.md

部署kube-batch

kube-batch用来实现gang调度

kubectl create -f kube-batch/deploy.yaml  

部署prometheus生态组件

参考prometheus/readme.md

部署efk生态组件

参考efk/readme.md

部署frameworkercontroller组件

参考frameworkercontroller/readme.md

部署volcano组件

kubectl apply -f volcano/volcano-development.yaml

部署kubeflow

参考kubeflow/v1.2.0/readme.md

部署 管理平台

如果涉及到多集群部署修改kubeconfig中的文件文件名为$cluster-config并在每个集群中部署configmap

kubectl delete configmap kubernetes-config -n infra
kubectl create configmap kubernetes-config --from-file=kubeconfig -n infra

kubectl delete configmap kubernetes-config -n pipeline
kubectl create configmap kubernetes-config --from-file=kubeconfig -n pipeline

kubectl delete configmap kubernetes-config -n katib
kubectl create configmap kubernetes-config --from-file=kubeconfig -n katib

组件说明

  • cube/base/deploy.yaml为myapp的前后端代码
  • cube/base/deploy-schedule.yaml 为任务产生器
  • cube/base/deploy-worker.yaml 为任务执行器
  • cube/base/deploy-watch.yaml 任务监听器

配置文件说明

  • cube/overlays/config/entrypoint.sh 镜像启动脚本
  • cube/overlays/config/config.py 配置文件,需要将其中的配置项替换为自己的

部署入口
cube/overlays/kustomization.yml

修改kustomization.yml中需要用到的环境变量。例如HOST为平台的域名需要指向istio ingressgate的服务(本地调试可以写入到/etc/hosts文件中)

部署执行命令

为部署控制台容器的机器添加lable,  kubeflow-dashboard=true
kubectl apply -k cube/overlays  

部署pv-pvc.yaml

kubectl create -f pv-pvc-infra.yaml  
kubectl create -f pv-pvc-jupyter.yaml  
kubectl create -f pv-pvc-katib.yaml  
# kubectl create -f pv-pvc-kubeflow.yaml  
kubectl create -f pv-pvc-pipeline.yaml  
kubectl create -f pv-pvc-service.yaml  

部署平台入口

# 创建8080网关服务  
kubectl apply -f gateway.yaml  
# 创建新的账号需要  
kubectl apply -f sa-rbac.yaml          
# 修改并创建virtual。需要将其中的管理平台的域名批量修改为平台的域名
kubectl apply -f virtual.yaml  

kube-scheduler调度策略

可以参考 https://docs.qq.com/doc/DWFVqcFd0S29WUGxD

版本升级

数据库升级,数据库记录要批量添加默认值到原有记录上,不然容易添加失败