6-1 定时任务迁移kubernetes

1 把服务做到镜像里

搞定基础镜像

搞定服务运行的相关文件

构建镜像 - Dockerfile

 

2 制作k8s服务 并调度

确定服务发现的策略

编写k8s配置文件

 

 

D:\BaiduNetdiskDownload\部署落地+业务迁移 玩转k8s进阶与企业级实践技能\000.课程资料\000.课程资料\mooc-k8s-demo-docker-master\mooc-k8s-demo-docker\cronjob-demo

编译jar包

mvn clean install

启动jar包命令为

java -cp cronjob-demo-1.0-SNAPSHOT.jar com.mooc.demo.cronjob.Main

制作Dockerfile 并制作镜像 上传harbor

FROM openjdk:8-jre-alpine


COPY ./cronjob-demo-1.0-SNAPSHOT.jar /cronjob-demo-1.0-SNAPSHOT.jar


ENTRYPOINT ["java","-cp","/cronjob-demo-1.0-SNAPSHOT.jar","com.mooc.demo.cronjob.Main"]

 

在Dockerfile的当前路径下 执行编译命令

docker build -t cronjob:v1 .

启动容器 然后等待响应的时间之后 会自动退出容器

docker run -it cronjob:v1

 

给容器打tag 准备推送到仓库

docker tag cronjob:v1 harbor.pdabc.com/kubernetes/cronjob:v1

 

登录 harbor.pdabc.com的pusher账号

推送镜像

docker push  harbor.pdabc.com/kubernetes/cronjob:v1

 

 

D:\BaiduNetdiskDownload\部署落地+业务迁移 玩转k8s进阶与企业级实践技能\000.课程资料\000.课程资料\mooc-k8s-demo-docker-master\mooc-k8s-demo-docker\configs\cronjob.yaml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-demo
spec:
  schedule: "*/1 * * * *"
#  保留成功的现场3次 pod并不会删除,最多保留最近的3个
  successfulJobsHistoryLimit: 3
# false表示立即调度
  suspend: false
# 如果一个每分钟运行的任务执行3分钟,后面的job是同时运行还是等待.
  concurrencyPolicy: Forbid
# 和success对应
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: cronjob-demo
        spec:
# 重启策略
          restartPolicy: Never
          containers:
          - name: cronjob-demo
            image: harbor.pdabc.com/kubernetes/cronjob:v1


 

 

# 创建任务

kubectl apply -f cronjob.yaml

# 查看任务 需要等一分钟 触发job

kubectl get cronjob

# 查看到active=1 即有一次schedule之后查看pod 可以看到正在运行的crontab job 执行完成则会看到状态running变为completed 这里要确保所有节点都可以登录连接到harbor.pdabc.com哦,否则会一直卡在creatingcontainer状态

kubectl get pods

可以在对应启动job的node节点看到启动过的容器

docker ps -a |grep cronjob

检查日志

docker logs ${containername}

 

这里用pc机子创建的集群 在创第3个容器的时候偶尔会卡在creatingcontainer状态.但是物理机创建的不会- -. 错误我就不截图了

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐