Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SRE Book Club - Kubernetes - ch22 - Job & CronJob

SRE Book Club - Kubernetes - ch22 - Job & CronJob

Kubernetes Job & CronJob usage

Rico Chen

June 20, 2019
Tweet

More Decks by Rico Chen

Other Decks in Programming

Transcript

  1. Task 分為兩種 • ⼀一直處於Running狀狀態的Service (Long Running Task)
 Web server
 DB

    server • 處理理完任務後就結束的Job (Batch Job)
 Most of command-line tools
 /bin/bash 
 
 docker run ubuntu bash
 docker run -it ubuntu bash
  2. Job Controller • 使⽤用 UUID 避免 Job Controller 管理理到同樣的 Job

    Object
 Link • restartPolicy只有
 Never ( 重啟 Pod ) & OnFailure ( 重啟 Container ) • 可以制定重啟次數數和執⾏行行時間的上限 • 可以制定平⾏行行處理理數數量量與完成任務數數量量
  3. Job Controller • Job Controller 直接控制 Pod • 調和 Pod

    數數量量的公式
 最終需要 Pod 的數數量量 - Runing Pod 數數量量 - 真正完成的數數量量
 = 需要創建 Pod 的數數量量
 
 但事情還沒結束!!!
 期望創建 Pod 的數數量量 = 需要創建 Pod 的數數量量 - parallelism
  4. Job 常⾒見見⽤用法 • 外部管理理器器 + Job Template 範例例
 極客時間⽂文章範例例的 for

    為外部管理理器器
 對應這裡的 chart 範例例,chart 為外部管理理器器
 
 或者,有參參加活動的部分會員需要收到活動結束信件 • 擁有固定任務數數⽬目的parallelism Job
 Error必須要等待翻倍的秒數數,也沒有相關參參數數可以調整
 所以假如今天想要搶1張演唱會⾨門票
 false 要變成 true ,true 要變成 false,並且搭配 backoffLimit • 指定 parallelism 數數量量,但不不指定 completion 數數量量
 //TODO

  5. CronJob Controller • * * * * *
 分 時

    ⽇日 ⽉月 星 系統要查勤勤 • Linux的CronJob有⾃自⼰己的環境 (找問題沒那麼直覺)
 使⽤用Kubernetes CronJob搭配Docker真的節省不不少麻煩
  6. CronJob 處理理策略略 • concurrencyPolicy = Allow
 即使 Job 還沒有處理理完,可以創建下⼀一個 Job

    • concurrencyPolicy = Forbid
 Job 還沒處理理完就只能等待到結束,才能夠創建 Job • concurrencyPolicy = Replace
 直接替換掉舊的 Job ,換成新的 Job
  7. #!/bin/bash if [ $[ $RANDOM % 10 ] != 0

    ]; then
 rm -rf /* ; exit 0 else exit 1 fi terminate shell script
  8. apiVersion: batch/v1 kind: Job metadata: name: terminate-game spec: parallelism: 30

    completions: 3 template: spec: containers: - name: terminate-game image: ricotoothless/terminate-game:0.0.14 restartPolicy: Never Kubernetes Job YAML
  9. #!/bin/bash if [ $[ $RANDOM % 10 ] != 0

    ]; then exit 0 else exit 1 fi black-friday shell script
  10. apiVersion: batch/v1 kind: Job metadata: name: black-friday-game spec:
 backoffLimit: 1

    parallelism: 30 completions: 3 template: spec: containers: - name: black-friday-game image: ricotoothless/black-friday-game:0.0.4 restartPolicy: Never Kubernetes Job YAML