资源控制器-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操作应该是幂等的

posted @ 2019-12-10 14:41  BachrRR  阅读(108)  评论(0)    收藏  举报