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

k8s部署-23-定时任务迁移到k8s中_第1张图片

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

图片

服务迁移类型

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

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

迁移思路

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

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

k8s部署-23-定时任务迁移到k8s中_第2张图片

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

k8s部署-23-定时任务迁移到k8s中_第3张图片

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

基础镜像

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

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

1、从dockerhub上下载镜像

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

[root@jier ~]# docker pull openjdk:8-jre
[root@jier ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
openjdk      8-jre     71d97cb5644a   8 days ago    273MB
nginx        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]# ls
cronjob-demo.zip
[root@node1 ceshi]# 
[root@node1 ceshi]# unzip cronjob-demo.zip
[root@node1 ceshi]# cd cronjob-demo/
[root@node1 cronjob-demo]# ls
pom.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-maven
export 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-maven
Java 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/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
[root@node1 ceshi]#

4、打包程序

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

你可能感兴趣的:(k8s,kubernetes,linux,centos)