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
Kubernetes (EKS) で構築する スケーラブルなジョブ実行基盤
Search
Kenta Suzuki
August 28, 2019
Technology
7
5.7k
Kubernetes (EKS) で構築する スケーラブルなジョブ実行基盤
Kenta Suzuki
August 28, 2019
Tweet
Share
More Decks by Kenta Suzuki
See All by Kenta Suzuki
trocco®での インシデント重大度表(SEVレベル表)運用
kekekenta
0
850
Ruby はじめての型 Gotanda.rb 2023/04/20
kekekenta
0
180
trocco® の品質を守る、とても普通な取り組み
kekekenta
0
3.2k
Embulkを利用したデータ統合SaaSの構築と運用
kekekenta
2
3.9k
Other Decks in Technology
See All in Technology
依存ライブラリはどこに?
takesection
0
110
Autify Company Deck
autifyhq
1
30k
ハイパフォーマンスな組織をつくるための開発生産性の考え方 / developer-productivity-high-performer-link-and-motivation
lmi
3
270
サービスメッシュ環境における OpenTelemetry 活用 / OpenTelemetry in Service Mesh
k6s4i53rx
2
860
2023 Japan AWS Jr.Championsに選出されての振り返りとこれから
hiropy877
1
130
業務で使えるかもしれない…!?GitHub Actions の Tips 集 / CI/CD Test Night #7
ponkio_o
PRO
24
7.1k
.NETの非同期戦略とUnityとの相互運用
neuecc
2
2.4k
実務への応用例から考える 変更に強いオブジェクト指向設計 / 20240324-ooc2024
bengo4com
7
5.5k
Tohoku.Tech #1 「Cursorを使ったRaspberry Piの開発」by ねこまた
jun2882
0
250
技育祭2024春 LT Finatextホールディングス
kevinrobot34
1
170
KubeCon EU 2024 : Knative Maintainers Session
salaboy
0
380
Evolutionary Optimization of Model Merging Recipes
fuyu_quant0
3
550
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
Six Lessons from altMBA
skipperchong
19
2.9k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
178
11k
What's new in Ruby 2.0
geeforr
335
31k
Docker and Python
trallard
33
2.6k
Bash Introduction
62gerente
604
210k
How to name files
jennybc
62
92k
Imperfection Machines: The Place of Print at Facebook
scottboms
257
12k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
185
15k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
111
35k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Transcript
Kubernetes (EKS) Ͱߏங͢Δ εέʔϥϒϧͳδϣϒ࣮ߦج൫ Kenta Suzuki (twitter: @kekekenta) CTO, primeNumber
inc 2019/8/28 Kubernetes Meetup Tokyo #22
ࣗݾհ • Kenta Suzuki • twitter: @kekekenta • CTO, primeNumber
inc. εϥΠυͷ࠷ޙʹձࣾհࡌͤ·ͨ͠ͷͰɺ͝ڵຯ͋Γ·ͨ͠Βޚཡ͍ͩ͘͞ •ੳج൫ߏஙɾӡ༻ࢧԉSaaSʮtrocco®ʯ
.Z42- 4 4BMFTGPSDF #JH2VFSZ ੳج൫ߏஙɾӡ༻ σʔλసૹ αϚϦʔςʔϒϧ࡞ σʔλࢹ ֎෦࿈ܞ
.Z42- 4 4BMFTGPSDF #JH2VFSZ σʔλసૹ αϚϦʔςʔϒϧ࡞ σʔλࢹ ֎෦࿈ܞ ੳج൫ͷߏஙɾӡ༻Λ·ͱΊͯΧόʔ
troccoͷσʔλసૹδϣϒ • σʔλιʔε • MySQLɺPostgreSQLɺSQLServerͳͲ • εέδϡʔϧ࣮ߦ • ࠷1ִؒ ҙͷσʔλιʔεͷςʔϒϧͷ༰ΛDWHʹసૹ
troccoͷσʔλసૹ෦OSSͷembulkΛଟ༻͍ͯ͠·͢ɻ ͜ͷΛआΓͯɺίϛολʔͷํʑɺembulkίϛϡχςΟͷํʑʹײँਃ্͛͠·͢ɻ ࠓޙembulkͷpluginެ։Ͱߩݙ͍ͯ͘͠༧ఆͰ͢ʂ
troccoͷసૹδϣϒ • δϣϒ࣮ߦ • ʙ10,000/ • δϣϒ͝ͱͷ࣮ߦ࣌ؒ • min: 5s
ʙ max: 5h • ࣮ߦ࣌ؒଳ • ࣌ؒʹ1ͷεύΠΫ
Fan out on ECS چΞʔΩςΫνϟ
Fan out on ECSαʔϏε SQS εέδϡʔϥʔ 8PSLFS &$4UBTL 8PSLFS &$4UBTL
8PSLFS &$4UBTL ECS ECS NODE δϣϒ polling
λεΫεέʔϧΞτͷλΠϛϯά͍͠ • SQSͷΩϡʔͷαΠζΛࢹ • CloudwatchϝτϦΫε͕࠷1͝ͱ • εέʔϧ·Ͱɺ1ͨͳ͍ͱߦ͚ͳ͍
ϗετεέʔϧΞτͷλΠϛϯά͍͠ • λεΫ͕͏ՃͰ্ཱ͕ͪΔϦιʔε͕ ͳ͘ͳͬͨΒεέʔϧ • ىಈͪͷλεΫ͕ग़དྷͨλΠϛϯάͰϗ ετεέʔϧͯ͠΄͍͠ɻɻ
λεΫεέʔϧΠϯ͍͠ • ECSλεΫΛ҆શʹऴྃͤ͞Δඞཁ͕͋Δ • సૹδϣϒ5hʹٴͿ߹͋Δ • TERMγάφϧͷτϥοϓͯ͠graceful shutdownΛ ࣮ •
ͨͩ͠ɺECSͷίϯιʔϧ্ͷ࣮ߦதλεΫҰཡ͔ΒɺTERMΛૹͬͯ͠Β͘͢Δ ͱফ͑ͯ͠·͏
ϗετͷεέʔϧΠϯ͍͠ • Auto Scaling Group ͷ Life cycle hook ΛͬͯɺΠϯ
ελϯεఀࢭલʹDRAININGΛ࣮ࢪ • ىಈதͷλεΫ͕ͳΔ·Ͱࢹ͠ɺͳ͘ͳͬͨΒΠϯε λϯεఀࢭΛ͢͢ΊΔ • લड़ͷ௨ΓɺىಈதͷλεΫҰཡ͔Βফ͑ΔͨΊ͝ʹΐ ͝ʹΐͬͯͨ
Ϧιʔεׂ • సૹߴԽΦϓγϣϯͱͯ͠ɺCPU/ϝϞϦ্ݶΛઃఆ Ͱ͖ΔΑ͏ʹ͍ͨ͠ • ECSͰλεΫ͝ͱʹϦιʔε্ݶΛઃఆͰ͖Δ͕ɺى ಈ࣌ͷΈ • Ϧιʔε্ݶ͝ͱʹαʔϏεΛ͚Δඞཁ͕͋Γ
͍͠
ͦ͜Ͱɺk8s
k8sͷpodεέδϡʔϥʔʹͭ ͍ͯ
k8sͷpodεέδϡʔϥʔʹͭ ͍ͯ
k8sͷpodεέδϡʔϥʔʹͭ ͍ͯ statusͷભҠ "Pending" -> "Running" -> "Succeeded"
k8sͷpodεέδϡʔϥʔ • nodeϦιʔεͷۭ͖ঢ়گʹԠͯ͡ɺεέδϡʔϥʔ͕ॱ࣍podΛ nodeʹׂΓͯͯ͘ΕΔ • podΛ࡞͓͚ͯ͠ɺ͋ͱ࣮ߦ͞ΕΔͷΛ͚ͭͩ ,VCFSOFUFT QPE /0%& QPE
QPE pod্ཱͪ͛ ࣮ߦͪpod create pod
ͱΓ͋͑ͣࡶʹpodΛcreate͢Ε ɺ͋ͱk8s͕࣮ߦ·Ͱ໘ݟ ͯ͘ΕΔ
ϊʔυͷεέʔϧΞτ/Πϯ • EKSͷ߹ɺcluster autoscalerΛ͏ͷ͕σϑΝΫτʢͱ ࢥΘΕΔʣ https://github.com/kubernetes/autoscaler/tree/master/ cluster-autoscaler/cloudprovider/aws • podεέδϡʔϦϯάͷঢ়گʹԠͯ͡ɺEC2ϊʔυͷASG ܦ༝ͰεέʔϧΠϯɾΞτΛͬͯ͘ΕΔ
ϊʔυͷεέʔϧΞτ QPE &$/0%& QPE QPE 1FOEJOH ࠓͷnodeϦιʔεͰɺ podΛ্ཱͪ͛Δ͜ͱ͕ग़དྷͳ͍
ϊʔυͷεέʔϧΞτ QPE &$/0%& QPE &$/0%& QPE ClusterAutoscaler͕ASGܦ༝ͰnodeΛεέʔϧΞτ
ϊʔυεέʔϧΠϯ QPE &$/0%& QPE &$/0%& QPE
ϊʔυεέʔϧΠϯ QPE &$/0%& QPE &$/0%& Ϧιʔεʹ༨༟͕͋Δ
ϊʔυεέʔϧΠϯ QPE &$4/0%& QPE εέʔϧΠϯ
1. create pod ࣮ͯ͠ߦΛͭ 2. ඞཁʹԠͯ͡ɺnode͕εέʔϧΞ τ͢ΔͷΛͭ εέʔϥϒϧδϣϒج൫ര
k8sʹΑΔδϣϒج൫
ݱࡏͷΞʔΩςΫνϟ SQS εέδϡʔϥʔ 8PSLFS 1PE +PC %JTQBUDIFS Kubernetes δϣϒ create
pod schuedule pod &,4/0%& 8PSLFS 1PE $MVTUFS "VUPTDBMFS Scale in/out
Job Dispatcher SQS εέδϡʔϥʔ 8PSLFS 1PE Kubernetes δϣϒ create pod
schuedule pod &,4/0%& 8PSLFS 1PE $MVTUFS "VUPTDBMFS Scale in/out +PC %JTQBUDIFS
Job Dispatcher ˞ίʔυΠϝʔδͰ͢ • SQS Λ polling • k8s API
ʹϦΫΤετΛ͛ɺ pod Λ࡞
Job Dispatcher ˞ίʔυΠϝʔδͰ͢ LT"1*ʹϦΫΤετ • SQS Λ polling • k8s
API ʹϦΫΤετΛ͛ɺ pod Λ࡞
Job Dispatcher ˞ίʔυΠϝʔδͰ͢ EPDLFSΠϝʔ δͷλάࢦఆ • SQS Λ polling •
k8s API ʹϦΫΤετΛ͛ɺ pod Λ࡞
Job Dispatcher ˞ίʔυΠϝʔδͰ͢ QPEͰ࣮ߦ͢Δ ίϚϯυΛࢦఆ • SQS Λ polling •
k8s API ʹϦΫΤετΛ͛ɺ pod Λ࡞
Job Dispatcher • SQS Λ polling • k8s API ʹϦΫΤετΛ͛ɺ
pod Λ࡞ ˞ίʔυΠϝʔδͰ͢ $16ϝϞϦࢦఆ
Worker pod SQS εέδϡʔϥʔ +PC %JTQBUDIFS Kubernetes δϣϒ create pod
schuedule pod &,4/0%& $MVTUFS "VUPTDBMFS Scale in/out 8PSLFS 1PE 8PSLFS 1PE
Worker pod • ࣮ࡍͷసૹΛ࣮ߦ • సૹ։࢝Ͱ্ཱ͕ͪΓɺసૹ͕ऴྃͨ͠Βpodऴྃ ˞ίʔυΠϝʔδͰ͢
Cluster autoscaler SQS εέδϡʔϥʔ +PC %JTQBUDIFS Kubernetes δϣϒ create pod
schuedule pod &,4/0%& Scale in/out 8PSLFS 1PE 8PSLFS 1PE $MVTUFS "VUPTDBMFS
Cluster autoscaler ˞ίʔυΠϝʔδͰ͢
k8sδϣϒج൫ಋೖͷՌ • ѹతίετݮʹޭ • εέʔϧͷλΠϛϯά͕͍͕͍͍͠ ײ͡ʹղܾͰ͖ͨ • cluster autoscaler༷༷ •
։ൃڥͱຊ൪ڥͷಉҰԽ
ࢹʹ͍ͭͯ • create podͰ͖ͳ͍ • pod͕pendingͷ··্ཱ͕ͪΒͳ͍ • pod͕runningதʹಥવࢮ ຊ൪ӡ༻࣮͕ແ͍ͷͰɺຊʹظ௨Γʹ ಈ͔͘ͱ͍͏ҙຯͰࢹΛ࣮ࢪ
troccoͷδϣϒεςʔλεભҠ • DB্ʹδϣϒ͝ͱͷεςʔλεΛอ࣋ • dispatcherpodͳͲ͕ͦΕͧΕߋ৽͢Δ RVFVFE TFUUJOH@VQ FYFDVUJOH TVDDFFEFE SQSʹΩϡʔΠϯά
create pod ྃ pod্ཱ͕ͪΓ·Γ pod͕࣮ߦத సૹྃ
redashͰͷࢹ RVFVFE TFUUJOH@VQ FYFDVUJOH TVDDFFEFE ֤εςʔλεͰཹ͍ͯͨ͠ΒΞϥʔτ
·ͱΊ • γϯϓϧ • k8sͷݞʹΕɺεέʔϥϒϧͳδϣϒج൫ߏஙγϯϓ ϧʹͳΔ • ࢹ • ӡ༻࣮͕ແ͍ͷͰɺͱΓ͋͑ͣऔΕΔσʔλͱ͓ͬͯ͘
• k8sͷҠߦΛৼΓฦͬͯ • όον͔Βk8sಋೖ͢ΔͷׂͱΓ͍͢ͷͰ͓͢͢Ί • কདྷతʹ • কདྷతʹɺϗετͷཧͱ͔Βͳͯ͘ྑ͘ͳΔͱخ͍͠
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ :bow Α͚Εձࣾհޚཡ͍ͩ͘͞
גࣜձࣾ primeNumber • 201511݄ ઃཱ • ࣾһ9໊ʢ͏ͪΤϯδχΞ8໊ʣ ύʔτφʔΤϯδχΞ30໊Ҏ্ • 201811݄
trocco®ϦϦʔε • 20197݄ γϦʔζAࢿۚௐୡʢ1.3ԯԁʣ࣮ࢪ https://primenumber.co.jp
ಇ͘ڥ • @தࠇͷԊ͍ • ίΞλΠϜ੍ • 11ʙ15࣌ • िதɺ2·ͰϦϞʔτՄ ※ࢼ༻த
• δϜશֹิॿ
We are hiring • ιϑτΣΞΤϯδχΞ • ΠϯϑϥΤϯδχΞ • ͳͲͳͲɺଟํ໘ઈࢍืूத