k8s部署-23-定时任务迁移到k8s中


经过前面20多篇文章的铺垫,对于k8s的认识,也是入门了,那么接下来就是我们的深度掌握,迁移、监控、扩展、服务调度、代理等等内容。我们先来了解下服务迁移吧,将线上环境迁移到我们的k8s中。

 服务迁移类型

1、cronjob(定时任务)2、dubbo(dubbo服务)3、springboot(springboot服务)4、web(web服务)

在这里我们分别针对上面的四种服务类型来做迁移,本文主要针对cronjob来做迁移示例。

迁移思路

我们既然要迁移,心里最起码需要知道如何做迁移吧,不然还不是两眼一抹黑,无从下手;首先我们知道k8s基于什么来启动的,其实说白了就是一堆的image对吧,那么我们就要先把服务写入image中,然后使用k8s来调度起来,就这么简单。

既然这样的话,那就引出下图:

那么再细分一下,打包image和k8s调度,都分别需要做什么呢?

是不是需要做上图中的事儿呀。那么一步一步来吧。

基础镜像

在这里的cronjob,使用的java语言,那么我们就需要先找到一个java环境的基础镜像,这里采取的方式是前往docker官方仓库找一个,你们可以选择阿里云等。

PS:本步骤可以选择不做,为什么呢?因为我推到了阿里云上了,你们都可以使用该镜像,省的再操作一遍了。

1、从dockerhub上下载镜像

PS:由于我服务器性能一般,故而docker我安装在了其他的服务器上,你们可以选择有docker的服务器即可。

[root@jier ~]# docker pull openjdk:8-jre[root@jier ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZEopenjdk      8-jre     71d97cb5644a   8 days ago    273MBnginx        1.19      f2f70adc5d89   10 days ago   142MB[root@jier ~]#

2、打一个标签

[root@jier ~]# docker tag openjdk:8-jre registry.cn-beijing.aliyuncs.com/yunweijia0909/openjdk:8-jre

3、推送到仓库

我这里推送的是我自己的阿里云仓库,你们可以推到前面搭建的hub仓库中。

[root@jier ~]# docker push registry.cn-beijing.aliyuncs.com/yunweijia0909/openjdk:8-jre

服务本身

在这里我提供了一个demo,打包使用即可。这个demo就是你业务场景中的服务,这里只是简单的举个例子,作用类似。

1、服务下载

从公众号“运维家”后台回复“cronjob服务包”,即可获取下载地址;下载完毕之后解压到node1节点上。

2、服务认识

看下这个服务提供了什么东西;

[root@node1 ~]# mkdir ceshi[root@node1 ~]# cd ceshi/[root@node1 ceshi]# lscronjob-demo.zip[root@node1 ceshi]# [root@node1 ceshi]# unzip cronjob-demo.zip[root@node1 ceshi]# cd cronjob-demo/[root@node1 cronjob-demo]# lspom.xml  src[root@node1 cronjob-demo]# [root@node1 cronjob-demo]# vim src/main/java/com/mooc/demo/cronjob/Main.java package com.yunweijia.demo.cronjob;import java.util.Random;/** * Created by Michael on 2018/9/29. */public class Main {    public static void main(String args[]) {        Random r = new Random();        int time = r.nextInt(20)+10;        System.out.println("I will working for "+time+" seconds!");        try{            Thread.sleep(time*1000);        }catch (Exception e) {            e.printStackTrace();        }        System.out.println("All work is done! Bye!");    }}[root@node1 cronjob-demo]#

从上面的代码中可以看到,取了一个随机数,然后休眠了该秒数,而后执行结束,且会输出两行内容,当然了,实际业务中绝不可能这么简单哈。

3、安装maven服务

PS:需要先安装jdk哈,因为比较简单,这里就不单独写了。

为什么要安装这个服务,因为要给我们的java代码打包成jar包来执行,不然源码是无法运行的。

[root@node1 cronjob-demo]# cd /root/ceshi/[root@node1 ceshi]# wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz --no-check-certificate[root@node1 ceshi]# tar xf apache-maven-3.8.5-bin.tar.gz[root@node1 ceshi]# mv apache-maven-3.8.5 apache-maven[root@node1 ceshi]# mv apache-maven /usr/local/[root@node1 ceshi]# vim /etc/profile# 在文件最后面添加如下两行export MAVEN_HOME=/usr/local/apache-mavenexport PATH=$MAVEN_HOME/bin:$PATH[root@node1 ceshi]# source /etc/profile[root@node1 ceshi]# mvn -v Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)Maven home: /usr/local/apache-mavenJava version: 1.8.0_161, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jreDefault locale: zh_CN, platform encoding: UTF-8OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"[root@node1 ceshi]#

4、打包程序

剩余内容请转至VX公众号 “运维家” ,回复 “130” 查看。

你可能感兴趣的:(k8s部署-23-定时任务迁移到k8s中)