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
36
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
560
how-to-choose-cicd-tools.pdf
ricotoothless
0
110
SRE Book Club - Linux - ch45 - Where's socket buffer
ricotoothless
0
130
SRE Book Club - Linux - ch38 - tcpdump & Wireshark
ricotoothless
0
54
COSCUP - Dynamic Jenkins Agent on Kubernetes
ricotoothless
0
58
Taiwan CDK Meetup - Rookie operator's CDK journey
ricotoothless
0
180
DevOps Taiwan 2020 Workshop - Jenkins CICD
ricotoothless
0
82
SRE Book Club - Kubernetes - ch32-35 - Network
ricotoothless
0
52
Other Decks in Programming
See All in Programming
ソフトウェアの振る舞いに着目し 複雑な要件の開発に立ち向かう
rickyban
0
890
.NET 9アプリをCGIとして レンタルサーバーで動かす
mayuki
1
770
暇に任せてProxmoxコンソール 作ってみました
karugamo
1
680
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
170
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
260
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
240
macOS なしで iOS アプリを開発する(※ただし xxx に限る)
mitsuharu
1
180
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
230
Cognitoが大型アップデート!Managed Loginとパスワードレスログインを実際に使ってみた@しむそくRadio Special Day1
tmhirai
3
330
競技プログラミングで 基礎体力を身につけよう / You can get basic skills through competitive programming
mdstoy
0
170
N.E.X.T LEVEL
pluu
2
290
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
180
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1366
200k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Adopting Sorbet at Scale
ufuk
73
9.1k
Fireside Chat
paigeccino
34
3.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Embracing the Ebb and Flow
colly
84
4.5k
Mobile First: as difficult as doing things right
swwweet
222
9k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
How GitHub (no longer) Works
holman
311
140k
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