Skip to content

Files

Failed to load latest commit information.

Latest commit

 Cannot retrieve latest commit at this time.

History

History
 
 

k8s

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Linkis on kubernetes

#重点解决问题 1.每个人在部署过程中,都会遇到包冲突,操作系统不兼容,openjdk,hotspot jdk兼容问题,docker交付可以从根本上解决这些问题

2.docker基于cgroup资源隔离,共享文件系统,namespace 可以轻量限制计算资源,秒级扩缩容

 例如:限制某个进程只能使用CPU一个核的20%资源
 cd /sys/fs/cgroup/cpu
 touch test 
 $ echo 10000 > cpu.cfs_quota_us 
 $ echo 50000 > cpu.cfs_period_us
 启动一个进程,请不要在生产做这样操作!!!!  
 $ while :; do :; done &
 记录当前进程Id
 $ echo pid >> tasks

#部署文档

##基础镜像及各服务镜像编译方法

目前所有微服务镜像都上传到dockerhub,https://hub.docker.com/repository/docker/wedatasphere/linkis

出于对虚机部署版本的考虑,新增了pom_k8s.xml,默认打包方式跟之前保持一致,如果想要自己编译镜像,需要引用pom_k8s.xml

mvn clean package -f  gateway/gateway-ujes-support/pom_k8s.xml

一.创建kubernetes docker secret

  k8s/registry.yaml 修改对应harbor的账号,密码,镜像仓库地址
  或者手动创建secret,后续拉取镜像使用,私有docker仓库请修改成私有reposity地址
  $kubectl create secret docker-registry registry-key \
   --docker-server=https://hub.docker.com \
   --docker-username=wedatasphere \
   --docker-password=***** \
   --docker-email=wedatasphere@webank.com

二.NFS/ceph 搭建

 搭建NFS或者ceph完成后,publicservice等微服务的deployment需要修改nfs的地址

三.基础镜像创建文件(使用官方维护的镜像可以跳过该步骤) 自己制作基础镜像方法如下:

  • 环境变量设置

    设置harbor的地址环境变量

    export HARBOR_LINKIS=
    
  • 基础镜像编译打包

    打包

    cd Linkis/emr-base
    docker build -t $HARBOR_LINKIS/linkis:emr-base-spark2.4.4 .
    

    推送

    docker push  $HARBOR_LINKIS/linkis:emr-base-spark2.4.4 
    
  • 基础依赖包编译

    mvn clean install -Dmaven.test.skip=true
    
  • 替换各个微服务Dockerfile的基础镜像为自己的私服地址

    find . -name Dockerfile | xargs grep -rl "FROM wedatasphere/linkis" | xargs sed -i "" "s?FROM wedatasphere/linkis?FROM $HARBOR_LINKIS/linkis?"
    find . -name "*.yaml" | xargs grep -rl "image: wedatasphere/linkis" | xargs sed -i "" "s?image: wedatasphere/linkis?image: $HARBOR_LINKIS/linkis?"
    
  • 编译各微服务镜像

    各个微服务basedir下面有对应 module 的 Dockerfile 与公司内部的CI/CD集成,可以通过mvn docker插件直接编译docker镜像

    sh k8s/package.sh
    sh k8s/build.sh
    sh k8s/push.sh
    

四、K8S部署

1.大数据环境配置
  > 主要涉及 hadoop,hive,spark环境配置,需要将几个组件的配置在k8s各个节点上
  
  | 组件 | 版本 |  节点目录 |
  | ---  | --- |  ---    |
  | hadoop | 2.7.7 | /opt/hadoop/hadoop-2.7.7 |
  | hive  | 2.3.6  | /opt/hive/apache-hive-2.3.6-bin |
  | spark | 2.4    | /opt/spark/spark-2.4.4-bin-hadoop2.7 |   
  
2.启动eureka
  eureka部署在k8s的任意一个node节点上就可以
  启动eureka成功后
  修改Linkis/k8s/linkis-eureka-configmap.yaml中的eurekaUrl
  
3.修改k8s目录下的linkis-*- configmap.yaml
  特别注意配置文件的正确性,避免后续部署的低级问题出现,如数据库连接不上,hdfs地址不正确等等
  例如gateway/linkis.properties 复制到k8s/linkis-gateway-configmap.yaml
  
4.运行k8s目录下的 
  sh init.sh
  观察eureka上注册的服务,一共22个,都启动成功基本就没有问题