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状态.但是物理机创建的不会- -. 错误我就不截图了