Kubernetes---资源控制器之DaemonSet、Job和CronJob

⒈DaemonSet介绍,什么是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
⒉DaemonSet资源文件示例
apiVersion: apps/v1 
kind: DaemonSet 
metadata:
  name: deamonset-example 
  labels: 
    app: daemonset 
spec:
  selector:
    matchLabels:
      name: deamonset-example 
  template:
    metadata:
      1abels: 
        name: deamonset-example 
    spec: 
      containers:
      - name: daemonset-example 
        image: fanqisoft/myapp:v1

⒊Job介绍,什么是Jobapi

  Job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束
  特殊说明
  ·spec.template格式同Pod
  ·RestartPolicy仅支持Never或OnFailure
  ·单个Pod时,默认Pod成功运行后Job即结束·
  .spec.completions 标志Job结束须要成功运行的Pod个数,默认为1·
  .spec.parallelism 标志并行运行的Pod的个数,默认为1
  ·spec.activeDeadlineseconds标志失败Pod的重试最大时间,超过这个时间不会继续重试
⒋Job资源文件示例
  
apiVersion: batch/v1 
kind: Job 
metadata:
  name:pi 
spec:
  template:
    metadata:
      name:pi 
    spec:
      containers:
      - name: pi 
        image: perl 
      command: ["per1","-Mbignum=bpi","-wle","print bpi(2000)"]
      restartPolicy: Never

⒌CronJob并发

  CronJob管理基于时间的Job,即:
  ·在给定时间点只运行一次
  ·周期性地在给定时间点运行
  使用条件:当前使用的Kubernetes 集群,版本>=1.8(对CronJob)
  典型的用法以下所示:
  ·在给定的时间点调度Job运行
  ·建立周期性运行的Job,例如:数据库备份、发送邮件
 
⒍CronJob Spec
  ·spec.template格式同Pod
  ·RestartPolicy仅支持Never或OnFailure
  ·单个Pod时,默认Pod成功运行后Job即结束·
  .spec.completions标志Job结束须要成功运行的Pod个数,默认为1·
  .spec.parallelism 标志并行运行的Pod的个数,默认为1
  ·spec.activeDeadlineSeconds 标志失败Pod的重试最大时间,超过这个时间不会继续重试
 
  .spec.schedule:调度,必需字段,指定任务运行周期,格式同 Cron·
  .spec.jobTemplate:Job模板,必需字段,指定须要运行的任务,格式同Job
  .spec.startingDeadlineSeconds:启动Job的期限(秒级别),该字段是可选的。若是由于任何缘由而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的。若是没有指定,则没有期限.spec.concurrencyPolicy:并发策略,该字段也是可选的。它指定了如何处理被 Cron Job建立的Job的并发执行。只容许指定下面策略中的一种:
    Allow(默认):容许并发运行Job
    Forbid:禁止并发运行,若是前一个尚未完成,则直接跳过下一个
    Replace:取消当前正在运行的Job,用一个新的来替换
  注意,当前策略只能应用于同一个CronJob建立的Job。若是存在多个Cron Job,它们建立的Job之间老是容许并发运行。
  .spec.suspend:挂起,该字段也是可选的。若是设置为true,后续全部执行都会被挂起。它对已经开始执行的Job不起做用。默认值为false。
  .spec.successfulJobsHistoryLimit和.spec.failed]obsHistoryLimit:历史限制,是可选的字段。它们指定了能够保留多少完成和失败的Job。默认状况下,它们分别设置为3和1。设置限制的值为e,相关类型的Job完成后将不会被保留。
 
⒎CronJob资源文件示例
apiVersion: batch/v1beta1 
kind: CronJob 
metadata:
  name: he11o 
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自己的一些限制app

  建立Job操做应该是幂等的spa

  CronJob并不太好去判断任务是否成功,CronJob经过建立Job去完成任务,Job成功与否能够判断,但CronJob没法连接到Job去获取成功与否,Cron只会按期的去建立Job,仅此而已。代理

相关文章
相关标签/搜索