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,僅此而已。代理

相關文章
相關標籤/搜索