一、项目下载地址
链接:https://pan.baidu.com/s/1LRgh2aTGfUKqRE5Qi-jCug?pwd=qqnn
提取码:qqnn
下载完成导入到idea
目的是k8s定期调度这个任务,就像在linux里配置crontab效果是一样的。
二、分析
三、把服务做到镜像里
1、搞定基础镜像:下载基础镜像
我们来分析下,这是一个java写的项目,我们找一个java的基础镜像。
https://hub.docker.com
搜索java
我们到50上pull这个镜像
docker pull openjdk:8-jre-alpine
打标签,推到我们自己的仓库
docker tag openjdk:8-jre-alpine hub.mooc.com/kubernetes/openjdk:8-jre-alpine
docker push hub.mooc.com/kubernetes/openjdk:8-jre-alpine
这里遇到一个问题,应该是仓库被停掉了,去node-3检查一下:
docker ps | grep harbor
重启一下
docker-compose up -d
到node-1上再推送一下
docker push hub.mooc.com/kubernetes/openjdk:8-jre-alpine
2、搞定服务运行相关文件:打包
(1)我们打个包
注意,我们不在这里打包,我们把项目克隆到服务器上,在服务器上进行打包!!
2、克隆项目
登录到node-1节点
git clone https://git.imooc.com/coding-335/mooc-k8s-demo.git
cd mooc-k8s-demo/cronjob-demo/
mvn package
项目在target下面
我们先在主机上直接运行一下,看是否正常
java -cp cronjob-demo-1.0-SNAPSHOT.jar com.mooc.demo.cronjob.Main
(3)构建镜像:Dockerfile
vi Dockerfile
内容如下:
FROM hub.mooc.com/kubernetes/openjdk:8-jre-alpine
COPY target/cronjob-demo-1.0-SNAPSHOT.jar /cronjob-demo.jar
ENTRYPOINT ["java", "cp", "/cronjob-demo.jar", "com.mooc.demo.cronjob.Main"]
使用docker build一下
docker build -t cronjob:v1 .
我们来测试一下这个镜像能不能跑起来
docker run -it cronjob:v1
这里不用再加其他参数,因为我们在Dockerfile文件里已经写好了。
然后我们把镜像打一个tag,推送到镜像仓库
docker tag cronjob:v1 hub.mooc.com/kubernetes/cronjob:v1
docker push cronjob:v1 hub.mooc.com/kubernetes/cronjob:v1
四、制作k8s服务,并调度
我们这里没有服务发现的策略,没有网络和端口。
下面我们来编写k8s的配置
crontab.yaml文件内容如下:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-demo
spec:
schedule: "*/1 * * * *"
successfulJobsHistoryLimit: 3
suspend: false
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
metadata:
labels:
app: cronjob-demo
spec:
restartPolicy: Never
containers:
- name: cronjob-demo
image: hub.mooc.com/kubernetes/cronjob:v1
下面,我们来启动一下
kubect apply -f cronjob.yaml
查看一下:
kubectl get crontjob
等一会。。
我们先去看下pod
kubectl get pods
当前只有一个是之前我们做的tomcat的pod。
好了,我们现在再去看下
kubectl get crontjob
再去看下pod
kubectl get pods
kubectl get pods -o wide
在121上,我们去121上看下
docker ps | grep crontjob
docker ps -a | grep cronjob
查看下日志
docker logs 882cf4dee95d
到此,这个简单的项目就调度在k8s上了。