• 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介绍,什么是Job

      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本身的一些限制

      创建Job操作应该是幂等的

      CronJob并不太好去判断任务是否成功,CronJob通过创建Job去完成任务,Job成功与否可以判断,但CronJob无法链接到Job去获取成功与否,Cron只会定期的去创建Job,仅此而已。

  • 相关阅读:
    hadoop中的序列化
    web服务端的架构演变
    网易考拉规则引擎平台架构设计与实践
    spring分布式事务学习笔记(2)
    质量评估面面观--聊一聊软件上线前的质量评估
    用script标签加载
    Windows下命令行下启动ORACLE服务
    笔记本优化八项
    C#编程总结(一)序列化
    学习之路十四:客户端调用WCF服务的几种方法小议
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/11577889.html
Copyright © 2020-2023  润新知