Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SRE Book Club - Kubernetes - ch22 - Job & CronJob
Search
Rico Chen
June 20, 2019
Programming
0
23
SRE Book Club - Kubernetes - ch22 - Job & CronJob
Kubernetes Job & CronJob usage
Rico Chen
June 20, 2019
Tweet
Share
More Decks by Rico Chen
See All by Rico Chen
How to monitor Cosmos validator by Prometheus
ricotoothless
0
470
how-to-choose-cicd-tools.pdf
ricotoothless
0
100
SRE Book Club - Linux - ch45 - Where's socket buffer
ricotoothless
0
94
SRE Book Club - Linux - ch38 - tcpdump & Wireshark
ricotoothless
0
41
COSCUP - Dynamic Jenkins Agent on Kubernetes
ricotoothless
0
53
Taiwan CDK Meetup - Rookie operator's CDK journey
ricotoothless
0
160
DevOps Taiwan 2020 Workshop - Jenkins CICD
ricotoothless
0
73
SRE Book Club - Kubernetes - ch32-35 - Network
ricotoothless
0
37
Other Decks in Programming
See All in Programming
Node.js v22 で変わること
yosuke_furukawa
PRO
11
3.9k
Implementing Design Systems in Swift
seyfoyun
1
460
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
6
1.2k
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
4
380
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
170
Tailwind CSSを本気でカスタマイズする方法
fsubal
14
5.5k
AmperとFleetを使ったAndroidアプリ
yoppie
0
250
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
180
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
220
Try creating your own orderedmap
kazamori
1
190
敵対的ポイフル
futabato
0
130
Ruby Function Composition
bkuhlmann
1
340
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
45
9.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
21
1.9k
The Pragmatic Product Professional
lauravandoore
26
5.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
The Cost Of JavaScript in 2023
addyosmani
20
3.9k
Mobile First: as difficult as doing things right
swwweet
217
8.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Gamification - CAS2011
davidbonilla
77
4.6k
The Art of Programming - Codeland 2020
erikaheidi
43
12k
10 Git Anti Patterns You Should be Aware of
lemiorhan
649
58k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
We Have a Design System, Now What?
morganepeng
43
6.8k
Transcript
CH22 Job & CronJob
快速 Overview 像我⼀一樣⽤用功很閒的早就讀完ch22了了 只是需要稍微複習⼀一下
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
Job Controller • 使⽤用 UUID 避免 Job Controller 管理理到同樣的 Job
Object Link • restartPolicy只有 Never ( 重啟 Pod ) & OnFailure ( 重啟 Container ) • 可以制定重啟次數數和執⾏行行時間的上限 • 可以制定平⾏行行處理理數數量量與完成任務數數量量
Job Controller • Job Controller 直接控制 Pod • 調和 Pod
數數量量的公式 最終需要 Pod 的數數量量 - Runing Pod 數數量量 - 真正完成的數數量量 = 需要創建 Pod 的數數量量 但事情還沒結束!!! 期望創建 Pod 的數數量量 = 需要創建 Pod 的數數量量 - parallelism
Job 常⾒見見⽤用法 • 外部管理理器器 + Job Template 範例例 極客時間⽂文章範例例的 for
為外部管理理器器 對應這裡的 chart 範例例,chart 為外部管理理器器 或者,有參參加活動的部分會員需要收到活動結束信件 • 擁有固定任務數數⽬目的parallelism Job Error必須要等待翻倍的秒數數,也沒有相關參參數數可以調整 所以假如今天想要搶1張演唱會⾨門票 false 要變成 true ,true 要變成 false,並且搭配 backoffLimit • 指定 parallelism 數數量量,但不不指定 completion 數數量量 //TODO
CronJob Controller • CronJob Controller ——> Job Object ——> Pod
CronJob Controller • * * * * * 分 時
⽇日 ⽉月 星 系統要查勤勤 • Linux的CronJob有⾃自⼰己的環境 (找問題沒那麼直覺) 使⽤用Kubernetes CronJob搭配Docker真的節省不不少麻煩
CronJob 處理理策略略 • concurrencyPolicy = Allow 即使 Job 還沒有處理理完,可以創建下⼀一個 Job
• concurrencyPolicy = Forbid Job 還沒處理理完就只能等待到結束,才能夠創建 Job • concurrencyPolicy = Replace 直接替換掉舊的 Job ,換成新的 Job
DemooooOOOoooo
情境⼀一 今天我們是殺⼿手,⽼老老闆說要上繳30具屍體 我們的團隊只有3個⼈人 且最近時機不不好,⼤大家都很會保住⼩小命 失敗率⾼高達10%
#!/bin/bash if [ $[ $RANDOM % 10 ] != 0
]; then rm -rf /* ; exit 0 else exit 1 fi terminate shell script
FROM centos:7 WORKDIR /usr/src/app COPY terminate.sh terminate.sh ENTRYPOINT bash -x
terminate.sh Dockerfile
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
情境⼆二 搶電商促銷商品,就是要開⼤大量量的process搶
情境⼆二 但是不不要⽤用 因為怪怪的 搶電商促銷商品,就是要開⼤大量量的process搶
#!/bin/bash if [ $[ $RANDOM % 10 ] != 0
]; then exit 0 else exit 1 fi black-friday shell script
FROM centos:7 WORKDIR /usr/src/app COPY black-friday.sh black-friday.sh ENTRYPOINT bash -x
black-friday.sh Dockerfile
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