k8s-第十一节-Job和CronJob

Job

Kubernetes jobs主要是针对短时和批量的工作负载。它是为了结束而运行的,而不是像deployment、replicasets、replication controllers和DaemonSets等其他对象那样持续运行。

Kubernetes Jobs会一直运行到Job中指定的任务完成。也就是说,如果pods给出退出代码0,那么Job就会退出。而在正常的Kubernetes中,无论退出代码是什么,deployment对象在终止或出现错误时都会创建新的pod,以保持deployment的理想状态。

CronJob

Job 和 CronJob 都是 Kubernetes 中的资源对象,用于定义需要执行的任务。它们的主要区别在于执行频率和触发条件。

Job 用于执行一次性任务,即仅执行一次的任务。Job 对象会创建一个或多个 Pod,并在它们完成任务后删除它们。Job 的生命周期由 Kubernetes 自动管理,无需人工干预。

CronJob 用于执行周期性任务,即按照指定的时间间隔重复执行的任务。CronJob 对象会创建一个或多个 Job,并根据 Cron 表达式来确定任务的执行时间。CronJob 的生命周期由 Kubernetes 自动管理,无需人工干预。

时间周期是和Linux 一样

schedule: "分 时 日 月 周"

适用场景

对于Kubernetes Jobs最好的用例实践是:

批处理任务: 比如说你想每天运行一次批处理任务,或者在指定日程中运行。它可能是像从存储库或数据库中读取文件那样,将它们分配给一个服务来处理文件。

运维/ad-hoc任务: 比如你想要运行一个脚本/代码,该脚本/代码会运行一个数据库清理活动,甚至备份一个Kubernetes集群。

  • 一次性任务,例如数据导入、数据处理、批量任务等
  • 定时任务,例如定期备份数据、定期发送通知等
  • 批量任务,例如处理大量数据、发送大量通知等

如何在 Kubernetes 中使用 Job 和 CronJob 资源对象?

yaml 复制代码
apiVersion: batch/v1
kind: Job
metadata:
    name: my-job
spec:
    template:
        spec:
            containers:
            - name: my-container
              image: my-image
              command: ["echo", "Hello, World!"]
            restartPolicy: OnFailure

然后,你可以使用以下命令来创建和部署这个 Job 对象:

bash 复制代码
kubectl create -f job.yaml

如果你想要创建一个 CronJob 对象来执行一个周期性任务,你可以创建一个名为 cronjob.yaml 的文件,其中包含以下内容:

yaml 复制代码
apiVersion: batch/v1beta1
kind: CronJob
metadata:
    name: my-cronjob
spec:
    schedule: "0 0 * * *"
    jobTemplate:
        spec:
            template:
                spec:
                    containers:
                    - name: my-container
                      image: my-image
                      command: ["echo", "Hello, World!"]
                    restartPolicy: OnFailure
相关推荐
炎码工坊1 小时前
API网关Envoy的鉴权与限流:构建安全可靠的微服务网关
网络安全·微服务·云原生·系统安全·安全架构
炎码工坊1 小时前
从零掌握微服务通信安全:mTLS全解析
安全·网络安全·云原生·系统安全·安全架构
Lw老王要学习2 小时前
Linux容器篇、第一章_02Rocky9.5 系统下 Docker 的持久化操作与 Dockerfile 指令详解
linux·运维·docker·容器·云计算
炎码工坊3 小时前
API网关Kong的鉴权与限流:高并发场景下的核心实践
安全·网络安全·微服务·云原生·系统安全
炎码工坊3 小时前
云原生安全实战:API网关Kong的鉴权与限流详解
网络安全·微服务·云原生·系统安全·安全架构
云上艺旅3 小时前
centos部署k8s v1.33版本
linux·云原生·kubernetes·centos
颜淡慕潇4 小时前
【K8S系列】Kubernetes 中 Pod(Java服务)启动缓慢的深度分析与解决方案
容器·kubernetes·pod
默心4 小时前
华为云上的K8S怎么使用对象存储配置pod文件持久化。
容器·kubernetes·华为云
955.4 小时前
k8s从入门到放弃之DaemonSet控制器
云原生·容器·kubernetes