Job管理
类似于一次性任务,创建POD临时运行一次任务,任务完成后pod状态为completed状态
应用场景:适用于运行测试的任务
restartPolicy:pod重启策略
Always 总是 默认
Nerver 从不
OnFailure 在失败时 $?=0 正常退出 $?不等于0 异常退出
# 创建Job资源
┌─[k8s-master]─[/k8s-learn/job-learn]
└──╼ cat job-test.yaml
apiVersion: batch/v1 # API版本为batch/v1
kind: Job #资源类型为Job
metadata:
name: test1-job #定义了Job的名称为test1-job。
spec: # pod模板元数据,name字段与job名一样
template:
metadata:
name: test1-job
spec:
#Pod的重启策略为Never,表示如果Pod中的容器失败,不会自动重启
restartPolicy: Never
containers:
- name: test1-job
image: centos:7
# imagePullPolicy字段设置为IfNotPresent,表示如果本地没有该镜像,则从远程仓库拉取。
imagePullPolicy: IfNotPresent
command:
- "/bin/bash"
- "-c"
- "for i in 1 2 3 4 5; do echo $i; done"
可以查看这个pod测试完这条命令之后的状态
┌─[k8s-master]─[/k8s-learn/job-learn]
└──╼ kubectl get pods
NAME READY STATUS RESTARTS AGE
test1-job-8g4rl 0/1 Completed 0 10s
1、Completed: 对于Job管理的Pod来说,当Pod成功完成其任务后,它的状态会变成Completed。这意味着Pod中的容器已经执行了它们的预期任务并按计划终止。
2、Failed pod中的容器以及终止,但至少有一个容器因为失败而终止的,即,容器退出状态非零或被系统终止。
#查看日志 测试成功
┌─[k8s-master]─[/k8s-learn/job-learn]
└──╼ kubectl logs test1-job-8g4rl
1
2
3
4
5
cronJob管理 周期性任务 应用场景:数据库备份
第一次running 之后 completed
第二次新建一个Pod running之后completed 以此类推
# 创建cronJob资源
┌─[k8s-master]─[/k8s-learn/cronJob-learn]
└──╼ cat cronjob-test.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: test1-cronjob
spec:
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
# 设置了成功和失败任务的历史记录限制为1,表示只保留最近一次成功或失败的任务记录。
schedule: '*/1 * * * *'
# 定义了CronJob的调度策略,这里使用Cron表达式表示每分钟执行一次。
jobTemplate:
spec:
template:
metadata:
name: test1-cronjob # 指定了Job的名称为test1-cronjob。
spec:
restartPolicy: OnFailure # 设置了Job的重启策略为OnFailure,表示如果容器失败,则会自动重启。
containers:
- name: test1
image: centos:7
imagePullPolicy: IfNotPresent
command:
- "/bin/bash"
- "-c"
- "for i in 1 2 3 4 5;do echo $i;done"
# 检查
┌─[k8s-master]─[/k8s-learn/cronJob-learn]
└──╼ kubectl get pod
NAME READY STATUS RESTARTS AGE
test1-cronjob-28524234-9ft4x 0/1 Completed 0 6s
# 查看任务是否是一分钟执行一次
┌─[k8s-master]─[/k8s-learn/cronJob-learn]
└──╼ kubectl get pods
NAME READY STATUS RESTARTS AGE
test1-cronjob-28524234-9ft4x 0/1 Completed 0 61s
test1-cronjob-28524235-4bqp9 0/1 ContainerCreating 0 1s
#这里显示61s的时候又创建了一个pod来执行这个任务
#再次查看
┌─[k8s-master]─[/k8s-learn/cronJob-learn]
└──╼ kubectl get pods
NAME READY STATUS RESTARTS AGE
test1-cronjob-28524235-4bqp9 0/1 Completed 0 6s
# 只显示这次执行任务的pod 而上一次的pod已经被删除