经过前面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 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” 查看。