资源控制器-DaemonSet、Job、CronJob
什么是DaemonSet
DaemonSet是确保全部(或者一些)node上运行一个Pod的副本。当有Node加入集群时,也会为它们新增一个Pod,当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod,使用DaemonSet的一些典型用法:
·运行集群存储daemon,例如在每个Node上运行glusterd、ceph
·在每个Node上运行日志收集daemon,例如fluentd、logstash
·在每个Node上运行监控daemon,例如Prometheus Node Exporter、collectd、Datadog代理、New Relic代理、或Ganglia 'gmond'
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: deamonset-example
labels:
app: daemonset
spec:
selector:
matchLabels:
name: deamonset-example
template:
metadata:
labels:
name: deamonset-example
spec:
containers:
- name: daemonset-example
image: wangyanglinux/myapp:v3
Job
job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束
特殊说明:
·spec.template格式同Pod
·RestartPolicy仅支持Nerver或OnFailure
·单个Pod时,默认Pod成功运行后job即结束
·.spec.completions标志job结束需要成功运行的Pod个数,默认为1
·.spec.parallelism标志并运行的Pod的个数,默认为1
·.spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试
Example
apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: metadata: name: pi spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never
//查看日志
CronJob Spec
·spec.template格式同Pod
·RestartPolicy仅支持Never或OnFailure
·单个Pod时,默认Pod成功运行后Job即结束
·.spec.completions标志Job结束需要成功运行的Pod个数,默认为1
·.spec.parallelism标志并行运行的Pod的个数,默认为1
·spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试
CronJob
Cron Job管理基于时间的job,即:
·在给定时间点内只运行一次
·周期性地在给定时间内运行
典型的用法:
·在给定的时间点调度Job运行
·创建周期性运行的job,例如:数据库备份、发送邮件
CronJob Spec
·.spec.schedule:调度,必须字段,指定任务运行周期,格式同Cron eg: * * * * *
·.spec.jobTemplate:Job模板,必须字段,指定需要运行的任务,格式同Job
·.spec.startingDeadlineSeconds:启动Job的期限(秒级别),该字段是可选的。如果因为任何原因而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的。如果没有指定,则没有期限。
·.spec.concurrencyPolicy:并发策略,该字段也是可选的。它指定了如何处理被Cron Job创建的Job的并发执行。只允许指定下面策略中的一种:
·Allow(默认):允许并发运行Job
·Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个
·Replcae:取消当前正在运行的job,用一个新的来替换
注意,当前策略只能应用于同一个Cron Job创建的Job,如果存在多个Cron job,它们创建的job之间总是允许并发运行的。
.spec.suspend:挂起,该字段也是可选的。如果设置为true,后续所有执行都会被挂起。它对已经开始执行的Job不起作用,默认值为false。
.spec.successfulJobsHistoryLimit和.spec.failedJobsHistoryLimit:历史限制,是可选的字段。它们指定了可以保留多少完成和失败的Job。默认情况下,他们分别设置为3和1.设置限制的值为0,相关类型的job完成后将不会被保留。
Example:
apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: schedule: "*/1 * * * * " jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo Hello from the kubernetes cluster restartPolicy: OnFailure
CronJob本身的一些限制
创建job操作应该是幂等的
浙公网安备 33010602011771号