Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PersistentVolumeの一歩進んだ使い方
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yukinori Sakashita
September 09, 2020
Technology
1.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PersistentVolumeの一歩進んだ使い方
CloudNative Days Tokyo2020 での発表資料です。
https://event.cloudnativedays.jp/cndt2020/talks/13
Yukinori Sakashita
September 09, 2020
More Decks by Yukinori Sakashita
See All by Yukinori Sakashita
ゼットラボにおける一歩進んだ Kubernetes向けストレージ管理方法
ysakashita
0
400
Kubernetes Persistent Volume向け ゾーン障害への備え
ysakashita
0
2.3k
はじめよう Kubernetes PersistentVolume のバックアップ
ysakashita
3
1.4k
2022年コンテナ/Kubernetes向けストレージ技術の最新動向
ysakashita
9
5.5k
Cloud Nativeに向けた考えるべきポイント
ysakashita
1
370
ステートフルアプリ on Kubernetesの現在と今後の展望
ysakashita
2
930
VM時代からコンテナ時代へストレージ管理の移り変わり
ysakashita
9
8.4k
Kubernetes時代のストレージ
ysakashita
1
750
Persistent Volumeのはじめの一歩
ysakashita
2
1.1k
Other Decks in Technology
See All in Technology
AI時代、データエンジニアが一番おもろい
genshun9
0
680
AI de Idea
kawaguti
PRO
2
130
Minecraft JavaのMODをSwiftで作る
1mash0
0
190
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
270
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
420
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
140
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
880
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
460
Antigravity SDK for the Java Developer
glaforge
0
170
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
170
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
5k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Odyssey Design
rkendrick25
PRO
2
810
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
710
A Modern Web Designer's Workflow
chriscoyier
699
190k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
240
A Soul's Torment
seathinner
8
3.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
900
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
1FSTJTUFOU7PMVNFͷ ҰาਐΜ͍ͩํ :VLJOPSJ4BLBTIJUB
ࣗݾհ ‣ٕज़ݚڀΤϦΞ ӡ༻ཧٕज़ Ϋϥυ αʔόετϨʔδ ࣗಈࣗίϯϐϡʔςΟϯά
"*.- // ).. #BZFTJBO/FUXPSL ‣લ৬ ཱ࡞ॴ 㾎தԝݚڀॴԣݚڀॴ ओݚڀһ 㾎ւ֎ݚڀॴ!γϦίϯόϨʔ ϥϘ αʔόϕϯμʔ ςΫχΧϧ4& 2 ࡔԼಙ ത࢜ :VLJOPSJ4BLBTIJUB 1I% ‣ ϠϑʔגࣜձࣾθοτϥϘגࣜձࣾ ‣ 4/*"ຊࢧ෦ٕज़ҕһձ෭ҕһ ‣ 4/*"5FDIOJDBM$PVODJM"EWJTPS
ओͳॻ੶8FCهࣄߨԋ ‣ ॻ੶,VCFSOFUFT࣮ફೖ ग़൛ ‣ 8FCهࣄ5IJOL*5 ίϯςφΛಋೖ͠ͳ͍ͱɺͲͷΑ͏ͳະདྷ͕ ͍ͬͯͨͷ͔
ݱͰཱͭ5JQT͕Γͩ͘͞Μ ,VCFSOFUFTͷΞϨίϨ ‣ ߨԋ ߴՊେֶใֶ܈ಛผߨٛʮσʔλͷരൃత૿ՃΛ ࢧ͑ΔετϨʔδͷઌٕज़ͱࠃࡍඪ४Խʯ ,VCF'FTU5PLZPʮϠϑʔθοτϥϘͷ εςʔτϑϧΞϓϦέʔγϣϯͷઓʯ 3
"HFOEB ‣ ,VCFSOFUFTͰΞϓϦέʔγϣϯΛ࣮ߦ͢ΔϢʔβ͚ 7PMVNF&YQBOTJPO 7PMVNF4OBQTIPU 7PMVNF$MPOJOH ‣
,VCFSOFUFTΛఏڙ͢Δཧऀ͚ 5PQPMPHZ .VMUJ";3FHJPO .POJUPSJOH 4 ؔ࿈ൃද,VCFSOFUFT.FFUVQ5PLZPlೖɺ,VCFSOFUFT1FSTJTUFOU7PMVNFz IUUQTTQFBLFSEFDLDPNZTBLBTIJUBSVNFOLVCFSOFUFTQFSTJTUFOUWPMVNF
7PMVNF&YQBOTJPO Ϣ ʔ β ͚
7PMVNF&YQBOTJPOͱ ‣ 1FSTJTUFOU7PMVNF 17 ͷαΠζΛ૿͢ػೳ ॖখෆՄ ‣ ετϨʔδͷ7PMVNFͷαΠζͱ'JMF4ZTUFNͷαΠζΛಉ࣌ʹ֦ு ‣
4UPSBHF$MBTTʹBMMPX7PMVNF&YQBOTJPOUSVFΛઃఆ ‣ 1PEͷ࠶࡞͕ෆཁͳ0OMJOF ‣ 1PEͷ࠶࡞͕ඞཁͳ0⒐JOF 6 ( ( BQJ7FSTJPOTUPSBHFLTJPW LJOE4UPSBHF$MBTT ʜ BMMPX7PMVNF&YQBOTJPOUSVF 4UPSBHF$MBTTͷઃఆྫ
มߋՕॴ ‣ 1FSTJTUFOU7PMVNF$MBJN 17$ ͷαΠζΛมߋ 7 BQJ7FSTJPOW LJOE1FSTJTUFOU7PMVNF$MBJN NFUBEBUB OBNFQWD
TQFD TUPSBHF$MBTT/BNFTUBOEBSE BDDFTT.PEFT 3FBE8SJUF0ODF SFTPVSDFT SFRVFTUT TUPSBHF(J BQJ7FSTJPOW LJOE1FSTJTUFOU7PMVNF$MBJN NFUBEBUB OBNFQWD TQFD TUPSBHF$MBTT/BNFTUBOEBSE BDDFTT.PEFT 3FBE8SJUF0ODF SFTPVSDFT SFRVFTUT TUPSBHF(J
࣮ߦྫ 8 $ kubectl get pvc NAME STATUS VOLUME CAPACITY
・・・ test-pvc Bound pvc-5452b84e-56e0-43cf-ada9-7491fd3ae2d4 10Gi $ kubectl patch pvc test-pvc -p "{\"spec\":{\"resources\":{\"requests\":{\"storage\": \"50Gi\"}}}}" $ kubectl get pvc NAME STATUS VOLUME CAPACITY ・・・ test-pvc Bound pvc-5452b84e-56e0-43cf-ada9-7491fd3ae2d4 50Gi มߋ
9 ҰาਐΜͩ
4UBUFGVM4FUͰཁҙ ‣ 7PMVNF$MBJN5FNQMBUF͔Β࡞͞Εͨ17$ͷαΠζมߋՄೳ ‣ ͔͠͠ɺσϓϩΠ͞Εͨ4UBUFGVM4FUͷ7PMVNF$MBJN5FNQMBUFTมߋෆՄ ‣ (JU)VCͳͲͰ.BOJGFTUΛཧ͍ͯ͠Δ߹ζϨ͕ੜ͡ͳ͍Α͏ʹҙ 10 BQJ7FSTJPOBQQTW LJOE4UBUFGVM4FU
ʜ WPMVNF$MBJN5FNQMBUFT NFUBEBUB OBNFCMPDL TQFD BDDFTT.PEFT<3FBE8SJUF0ODF> TUPSBHF$MBTT/BNFTUBOEBSE SFTPVSDFT SFRVFTUT TUPSBHF( มߋ͍ͨ͠ "QQMZ ࢀߟ ,&1IUUQTHJUIVCDPNLVCFSOFUFTFOIBODFNFOUTJTTVFT *TTVFIUUQTHJUIVCDPNLVCFSOFUFTLVCFSOFUFTJTTVFT
8PSLBSPVOE ‣ 4UBUFGVM4FUΛDBTDBEFΦϓγϣϯͰҰ࣌আ ‣ खॱྫ LVCFDUMQBUDIίϚϯυͳͲͰطଘͷ17$ͷαΠζΛมߋ 4UBUFGVM4FUͷ.BOJGFTUϑΝΠϧͷWPMVNF$MBJN5FNQMBUFTͷαΠζΛ खॱͱಉ͡αΠζʹมߋ
DBTDBEFΦϓγϣϯͰ4UBUFGVM4FUΛҰ࣌আ ࡞ࡁΈͷ1PE 17$ 17আ͞Εͳ͍ ࠶ɺखॱͰมߋͨ͠.BOJGFTUϑΝΠϧΛ"QQMZ 11 $ kubectl delete sts —cascade=false <StatefulSet name>
8PSLBSPVOE ҙ ‣ खॱͱͷؒ4UBUFGVM4FUͷϦιʔε͕ଘࡏ͠ͳ͍ ‣ ͜ͷؒʹো͕ൃੜ͢ΔͱηϧϑώʔϦϯάͰͷ෮چ͠ͳ͍ ‣ खॱͱؒೖΕͣʹ࣮ߦ͢Δͷ͕͓קΊ 12
8PSLBSPVOE ‣ 7PMVNF$MBJN5FNQMBUFTͰࣗಈੜ͞ΕΔ17$ͱ ಉ໊͡લͷ17$ͷ.BOJGFTUϑΝΠϧΛ༻ҙ ‣ 17$ͷ.BOJGFTUϑΝΠϧͰαΠζΛมߋ ‣ 4UBUFGVM4FUͷ7PMVNF$MBJN5FNQMBUFTͷαΠζมߋ͠ͳ͍ͨΊɺ ৽نʹ࡞͞ΕΔ17$17ݩͷαΠζͷͨΊཁҙ ‣
17$ͷ.BOJGFTUϑΝΠϧΛผ్࡞͢Δඞཁ͕͋Γ 4UBUFGVM4FUͷ7PMVNF$MBJN5FNQMBUFTͷϝϦοτ͕ݮ 13
17ͷ҆શͳαΠζ ‣ 7PMVNF&YQBOTJPOɺ࠷ऴखஈ͙Β͍ͷҙࣝͰαΠζΛࣄલʹઃܭ ‣ ετϨʔδͰ5IJO1SPWJTJPOJOH͕αϙʔτͷ߹ɺαΠζͷେ͖ͳ17 Λ༧Ί࡞ 5IJO1SPWJTJPOJOH࣮ࡍͷॻ͖ࠐ·ΕͨྖҬͷΈ ཧϝσΟΞ 44%ɺ)%%
Λফඅ ‣ 4UBUFGVM4FUͰͷ7PMVNF&YQBOTJPO8PSLBSPVOE͕͓קΊ 8PSLBSPVOEͷ࣮ࢪத(JU0QT่͕Εͯ͠·͏͕ɺҎ߱(JU0QT͕ܧଓ 8PSLBSPVOE4UBUFGVM4FUͰεέʔϧΞτલʹ17$ͷ.BOJGFTUΛ࡞ ͢Δඞཁ͋Γ ΕΔͱ17ͷσʔλᷓΕͷࣄނʹͭͳ͕ΔϦεΫ͋Γ 14
7PMVNF4OBQTIPU Ϣ ʔ β ͚
4OBQTIPUͱ ετϨʔδͷࣝ ‣ 4OBQTIPUΛ࡞ͨ࣌͠ࠁͷσʔλΛอଘ͢Δػೳ 16 " 5JNF # # "`
$ $ "Λ"`ʹ ॻ͖͑ 4OBQTIPU 7PMVNF " " # $ " # $ #` "` 4OBQTIPU࡞ 4PVSDF 4OBQTIPU࡞ #Λ#`ʹ ॻ͖͑ ࠩσʔλͷ อଘྖҬ $P8 $PQZPO8SJUF ʹ ΑΔࠩόοΫΞοϓ "`
,VCFSOFUFTͷ7PMVNF4OBQTIPU ‣ 7PMVNF4OBQTIPUͭͷϦιʔεͰදݱ 7PMVNF4OBQTIPU4OBQTIPUͷཁٻ༷ 7PMVNF4OBQTIPU$POUFOU4OBQTIPUͷίϯςϯπ ࠩσʔλͷू߹
7PMVNF4OBQTIPU$MBTT4OBQTIPU༻ͷ4UPSBHF$MBTT ͷΑ͏ͳͷ ‣ 7PMVNF4OBQTIPUϦιʔεΛ࡞͢Δ͜ͱͰετϨʔδͰ4OBQTIPU͕࣮ߦ ‣ 7PMVNF4OBQTIPU$POUFOUϦιʔεࣗಈੜ 17
7PMVNF4OBQTIPU 18 BQJ7FSTJPOTOBQTIPUTUPSBHFLTJPWCFUB LJOE7PMVNF4OBQTIPU NFUBEBUB OBNFTOBQTIPUQWD TQFD WPMVNF4OBQTIPU$MBTT/BNFDTJTOBQTIPU TPVSDF QFSTJTUFOU7PMVNF$MBJN/BNFUFTUQWD
UFTUQWD TOBQTIPUQWD ࢦఆ .BOJGFTUͷ"QQMZ 4OBQTIPU࣮ߦ
3FTUPSF ‣ 7PMVNF4OBQTIPU͔Βͷ3FTUPSF17$Λ࡞͢Δ͜ͱͰ࣮ࢪ 19 BQJ7FSTJPOW LJOE1FSTJTUFOU7PMVNF$MBJN NFUBEBUB OBNFQWDGSPNTOBQTIPU TQFD BDDFTT.PEFT
3FBE8SJUF0ODF TUPSBHF$MBTT/BNFTUBOEBSE SFTPVSDFT SFRVFTUT TUPSBHF(J EBUB4PVSDF BQJ(SPVQTOBQTIPUTUPSBHFLTJP LJOE7PMVNF4OBQTIPU OBNFTOBQTIPUQWD QWDGSPNTOBQTIPU TOBQTIPUQWD .BOJGFTUͷ"QQMZ 3FTUPSF࣮ߦ
20 ҰาਐΜͩ
ݩͷ17ͷඞཁੑ ‣ ετϨʔδͷ4OBQTIPUࠩσʔλͷΈอଘ ‣ 4OBQTIPUதͷࠩσʔλͷΞΫηεݪଇ3FBE0OMZ ‣ ݩͷ7PMVNFΛআ͢Δͷ/( ‣ ,VCFSOFUFTͷ7PMVNF4OBQTIPUʹ͓͍ͯݩͷ17$17আͯ͠/( ‣
3FTUPSFͨ͠ޙͰ͋ΕɺΘͳ͘ͳͬͨݩͷ17$17আͯ͠ྑ͍͔ʁ 21
ݩͷ17ͷඞཁੑ ଓ͖ ‣ ͑ ར༻͢ΔετϨʔδʹΑΓ·͢ 22 # "` $
" 3FBE8SJUF 3FBE8SJUF # "` $ " ݩͷ7PMVNF 4OBQTIPU 3FBE8SJUF 3FBE # "` $ " 3FBE8SJUF 3FBE8SJUF # $ 4OBQTIPUத 8SJUBCMF4OBQTIPUΛ༻ $MPOFͰ৽ن7PMΛ࡞ ݩͷ17 আ/( ݩͷ17 আ0, 3FTUPSF " 3FBE
7PMVNF$MPOJOH Ϣ ʔ β ͚
$MPOFͱ ετϨʔδͷࣝ ‣ ݩͷ7PMVNFͷෳ Ϋϩʔϯ Λ࡞ ‣ ݩͷ7PMVNFΑΓখ͞ͳ7PMVNF$MPOFͰ͖ͳ͍ ‣ ετϨʔδͰߦΘΕΔͨΊɺαʔόͷ$16.FNPSZ/FUXPSLΛΘͳ͍
24 # $ " # $ " 7PMVNF" 7PMVNF"` $MPOJOH
,VCFSOFUFTͷ7PMVNF$MPOJOH ‣ 17$ͷEBUB4PVSDFʹΫϩʔϯݩͷ17$Λࢦఆ ‣ όοΫΞοϓ༻్ͳͲʹར༻ 25 BQJ7FSTJPOW LJOE1FSTJTUFOU7PMVNF$MBJN NFUBEBUB OBNFQWD
TQFD BDDFTT.PEFT 3FBE8SJUF0ODF TUPSBHF$MBTT/BNFTUBOEBSE SFTPVSDFT SFRVFTUT TUPSBHF(J EBUB4PVSDF LJOE1FSTJTUFOU7PMVNF$MBJN OBNFQWD .BOJGFTUͷ"QQMZ $MPOJOH࣮ߦ QWD QWD
26 ҰาਐΜͩ
4UBUFGVM"QQͷεέʔϧΞτ ‣ σʔλΛ࣋ͭεςʔτϑϧΞϓϦͷεέʔϧΞτͰ σʔλಉظʹ͏ίϐʔ͕ൃੜ͢Δέʔε͕͋Δ ‣ 7PMVNF$MPOJOHେྔͷσʔλΛ࣋ͭεςʔτϑϧΞϓϦΛ εέʔϧΞτͤ͞Δͷʹ༗ޮ /PEFͷ$16.FNPSZ/FUXPSLΛΘͳ͍ͨΊσʔλίϐʔʹΑΔ ੑೳӨڹΛ͑ΒΕΔ
ߴ 27
.Z42-ͷεέʔϧΞτͷྲྀΕ 28 4PVSDF 3FQMJDB 4PVSDF ৽͍͠.Z42-ͷ1PEΛ࡞ /FX 4PVSDF
όοΫΞοϓΛऔಘ /FX #BDLVQ -PH1PTJUJPO 4PVSDF όοΫΞοϓΛΠϯϙʔτ /FX #BDLVQ -PH1PTJUJPO 4PVSDF 3FQMJDBͱͯ͠ىಈ 3FQMJDB ࢀরܥ42- ߋ৽ܥ42- .Z42-$MJFOUT .Z42-Ϛϧνߏ εέʔϧΞτ࣌ͷ3FQMJDB૿ઃεςοϓ 4UPSBHF
.Z42-ͷεέʔϧΞτ 29 ‣ .Z42-ͷόοΫΞοϓσʔλͷड͚͠ʹ௨Γͷํ๏͕͋Γ 4PVSDF /FX #BDLVQ /'4PS0CKFDU4UPSBHF ํ๏ ํ๏
ํ๏ 4PVSDF /FX #BDLVQ 4PVSDF /FX $MPOJOH
ํ๏ͱํ๏ͷҧ͍ 30 4UPSBHF 4UPSBHF ํ๏ 4FSWFS$PQZ ํ๏ 7PMVNF$MPOJOH σʔλͷྲྀΕ
4FSWFS$PQZͰͷεέʔϦϯάྫ ‣ JOJU$POUBJOFSͰεΫϦϓτΛ࣮ߦ͠όοΫΞοϓΛίϐʔ ‣ αΠυΧʔͰεΫϦϓτΛ࣮ߦ͠όοΫΞοϓΛΠϯϙʔτˍ ϩάͷϙδγϣϯΛઃఆͨ͠ޙɺ3FQMJDBͱͯ͠.Z42-Λىಈ ‣ શ.BOJGFTUҎԼΛࢀর IUUQTLVCFSOFUFTJPKBEPDTUBTLTSVOBQQMJDBUJPOSVOSFQMJDBUFETUBUFGVMBQQMJDBUJPO 31
JOJU$POUBJOFST ʜ DPNNBOE CBTI ʜ # Get data from previous peer. ncat --recv-only mysql-$(($ordinal-1)).mysql 3307 | xbstream -x -C /var/lib/mysql # Prepare the backup. xtrabackup --prepare --target-dir=/var/lib/mysql
7PMVNF$MPOJOHͷεέʔϦϯάྫ 32 BQJ7FSTJPOW LJOE1FSTJTUFOU7PMVNF$MBJN NFUBEBUB OBNFEBUBNZTRM TQFD ʜ apiVersion: apps/v1
kind: StatefulSet metadata: name: mysql … volumeClaimTemplates: - metadata: name: data … dataSource: kind: PersistentVolumeClaim name: data-mysql-0 ‣ 4PVSDFͱͳΔ.Z42-ͷ1PE NZTRM ͷ17$ࣄલʹ࡞ ͜ͷͱ͖ͷ17$໊7PMVNF$MBJN5FNQMBUFTͰࣗಈੜ͞ΕΔ໊લ ‣ 4UBUFGVM4FUͷ7PMVNF$MBJN5FNQMBUFͰEBUB4PVSDFʹ্ه17$Λࢦఆ ‣ .Z42-ͷίϯςφͰεΫϦϓτΛ࣮ߦ͠ϩάͷϙδγϣϯΛઃఆޙɺ3FQMJDB ͱͯ͠.Z42-Λىಈ
4FSWFS$PQZWT7PMVNF$MPOJOH ‣ 4FSWFS$PQZͱ7PMVNF$MPOJOHΛͬͨ߹ͷੑೳͷҧ͍ʁ 33
ੑೳଌఆڥ ‣ ,VCFSOFUFTW XPSLFSY W$16Y .FNPSZ.# ‣ /FU"QQ0/5"1W
/FU"QQ5SJEFOU ‣ .Z42- SFTPVSDFTSFRVFTUTDQVN NFNPSZ(J ‣ TZTCFODIʹͯ4PVSDFͷ.Z42-ࣄલʹϨίʔυΛొ .Z42-ͷϨίʔυ ԯϨίʔυɺ(# ‣ 4UBUFGVM4FUͷ3FQMJDBTΛ͔ΒεέʔϧΞτͤ͞ଌఆ 34 TZTCFODIECESJWFSNZTRMNZTRMIPTUNZTRMNZTRMNZTRMVTFSSPPUa UBCMF@TJ[FPMUQ@SFBE@POMZQSFQBSF LVCFDUMTDBMFSFQMJDBTTUBUFGVMTFUNZTRM
ଌఆ݁Ռ 35 εέʔϧΞτʹཁͨ͠૯࣌ؒ 3FQMJDBTˠ 1PE͋ͨΓͷੜ࣌ؒ ฏۉ ˞ TFD1PE TFD1PE 7PMVNF$MPOJOH
4FSWFS$PQZ 5JNF 4FD 4FSWFS$PQZ 7PMVNF$MPOJOH ˞1PEͷίϯςφ͕શͯىಈ͢Δ·Ͱͷ࣌ؒ
ଌఆ݁Ռ 36 7PMVNF $MPOJOH 4FSWFS $PQZ $16 /FUXPSL
7PMVNF$MPOJOHͷҙ 37 ‣ %#ͷεέʔϧ࣌Ճɾߋ৽ͷτϥϯβΫγϣϯ͕ೖΒͳ͍Α͏ʹ 8SJUFϩοΫΛ࣮ߦ͕Ұൠత %#ͷ੩ࢭԽ ‣ 4FSWFS$PQZ1PEͰ࣮ߦ͢ΔεΫϦϓτͰόοΫΞοϓલʹ࣮ࢪՄೳ ‣
7PMVNF$MPOJOHͰ1PEͷੜલʹσʔλͷίϐʔ͕ऴΘ͍ͬͯΔͨΊɺ1PEͰ ࣮ߦ͢ΔεΫϦϓτͰ͍ ࣄલʹखಈͰ42-࣮ߦPSผ1PE͔Β࣮ߦͳͲ 4PVSDF 3FQMJDB σʔλͷແ͍ 17$17Λ࡞ εΫϦϓτ࣮ߦ σʔλίϐʔ .Z42-ىಈ σʔλίϐʔࡁΈͷ 17$17Λ࡞ εΫϦϓτ࣮ߦ .Z42-ىಈ $MPOJOHJO4UPSBHF 4PVSDF 3FQMJDB 4FSWFS$PQZ 7PMVNF$MPOJOH %#ͷ੩ࢭԽ ࣮ࢪ %#ͷ੩ࢭԽ ࣮ࢪ
5PQPMPHZ .VMUJ";3FHJPO ཧ ऀ ͚
;POFΛҙ͍ࣝͯ͠ͳ͍ஔ ‣ 1PEΛ5PQPMPHZ4QSFBE$POTUSBJOUTͰ;POFΛҙࣝͨ͠ஔ ‣ ͔͠͠ɺ7PMVNFͷஔͷߟྀ͕࿙Ε͍ͯΔͱোରࡦͱͯ͠ยखམͪ 39 ,VCFSOFUFT 4UPSBHF "; ";
Ͳͷ";ͷཧϝσΟΞ ͔Β7PMVNF͕ ੜ͞Ε͍ͯΔͷͩΖ͏ʁ " # $ " # $
$4*ͷ5PQPMPHZ"XBSF ‣ 4UPSBHF$MBTTʹͯ;POFΛࢦఆ͠17 7PMVNF ͷੜݩΛࢦఆ 40 "; "; ";༻ ";༻
40 LJOE4UPSBHF$MBTT ʜ BMMPXFE5PQPMPHJFT NBUDI-BCFM&YQSFTTJPOT LFZGBJMVSFEPNBJOLVCFSOFUFTJP[POF WBMVFT "; LJOE4UPSBHF$MBTT ʜ BMMPXFE5PQPMPHJFT NBUDI-BCFM&YQSFTTJPOT LFZGBJMVSFEPNBJOLVCFSOFUFTJP[POF WBMVFT "; ৄࡉͳಈ࡞ݕূͪ͜ΒΛࢀর IUUQTRJJUBDPNZTBLBTIJUBJUFNTCBBDBEDF
41 ҰาਐΜͩ
.VMUJ";3FHJPOোରԠ 42 ‣ ετϨʔδσʔλΛࣦΘͳ͍͜ͱ͕ϛογϣϯͷΠϯϑϥػث ‣ ";3FHJPOোͷରࡦํ๏උ͍͑ͯΔ͜ͱ͕ଟ͍ %JTBTUFS3FDPWFSZରԠ ͲͪΒ͕͑Δ͔ετϨʔδ࣍ୈ
.JSSPS ಉظඇಉظ 4UPSBHF" 4UPSBHF# "; "; # $ " # $ " "; "; %BUB/PEF" #` $` " %BUB/PEF# # $`` "` %BUB/PEF$ #`` $ "`` ϛϥʔʹΑΔোରࡦ σʔλϨϓϦέʔγϣϯʹΑΔࢄஔ # $ "
,VCFSOFUFTͰͷઃܭࢦ 43 ‣ બࢶେ͖ͭ͘ Ϣʔβ͕";3FHJPOΛҙࣝͯ͠17࡞ Ϣʔβʹ";3FHJPOΛҙࣝͤͣ͞ʹ17࡞
Ϣʔβ͕";Λҙࣝͯ͠17࡞ 44 ‣ ";3FHJPOো࣌ͷσʔλফࣦϢʔβ ‣ $4*ͷ5PQPMPHZΛར༻ "; "; ";༻ ";༻
Ϣʔβʹ";Λҙࣝͤͣ͞ʹ17࡞ 45 ‣ ";3FHJPOো࣌ͷσʔλফࣦΠϯϑϥཧऀͷ ‣ ετϨʔδͷػೳΛ׆༻ ϛϥʔPSσʔλϨϓϦέʔγϣϯ ‣ ύϒϦοΫΫϥυͷ߹ɺ4%4ΛηοτΞοϓ͠ߏங͢Δํ๏͋Γ
"; "; "; "; %BUB/PEF" %BUB/PEF# %BUB/PEF$
.POJUPSJOH ཧ ऀ ɾ Ϣ ʔ β
͚
1SPNFUIFVTͷϝτϦΫεࢹ ‣ ετϨʔδͷ7PMVNF͕ͲͷΑ͏ʹίϯςφʹϚϯτ͞Ε͍ͯΔͷ͔Λཧղ ‣ 17ͷϝτϦΫε/PEFͱ֎෦ετϨʔδͷ྆ํ͔Βͷࢹ͕ϕλʔ /PEF ετϨʔδ ωοτϫʔΫͷͲ͜ʹϘτϧωοΫ͕͋Δ͔Λੳ σΟϨΫτϦ
σόΠε EFWTEC NOUEBUB WBSMJCLVCFMFUQPET1PEͷNFUBEBUBVJEWPMVNFTLVCFSOFUFTJPdDTJ17ͷNFUBEBUBOBNFNPVOU EFWTEB /PEFFYQPSUFSͷϞχλϦϯάൣғ LVCFMFUͷϞχλϦϯάൣғ D"EWJTPSͷϞχλϦϯάൣғ ֎෦ετϨʔδ ଂσΟεΫ $POUBJOFS <ࢀߟใετϨʔδؔ࿈ͷϝτϦΫεҰཡ> IUUQTRJJUBDPNZTBLBTIJUBJUFNTDCBCD
48 ҰาਐΜͩ
17$17ࢹͷੑೳࢹ ‣ 17$ 17ͷใLVCFTUBUFNFUSJDTͷϝτϦΫε ੑೳใͳ͠ αΠζɺͳͲ ‣ ੑೳใ/PEFFYQPSUFS
D"EWJTPSͷϝτϦΫε JPTUBU૬ͷใΛऔಘ 49 &MFNFOU 7BMVF kube_persistentvolumeclaim_info{…,namespace=“default”,persistentvolumeclaim=“block-pv- test-0”,storageclass=“standard”,...,volumename="pvc-9639e9ae-de8b-4f24-86f6-72273a74329b"} ྫ LVCF@QFSTJTUFOUWPMVNFDMBJN@JOGP &MFNFOU 7BMVF node_disk_written_bytes_total{…,device=“sda”,instance=“demo-test-worker-default-efe1dfcc-bn6q7”…} ྫ OPEF@EJTL@XSJUUFO@CZUFT@UPUBM
17$ࢹͰͷੑೳࢹͷམͱ݀͠ ‣ (SBGBOB1SPNFUIFVTͰ17$໊17໊ͰੑೳࢹΛ͍ͨ͠ ‣ ϝτϦΫε͕୯७ʹ࿈݁Ͱ͖ͳ͍ LVCFTUBUFNFUSJDTͷϝτϦΫεͷWPMVNFOBNF17໊ͷΈ /PEFFYQPSUFS D"EWJTPSͷϝτϦΫεͷσόΠε໊04Ͱೝࣝͨ͠ͷ
50 &MFNFOU 7BMVF kube_persistentvolumeclaim_info{…,namespace=“default”,persistentvolumeclaim=“block-pv- test-0”,storageclass=“standard”,...,volumename="pvc-9639e9ae-de8b-4f24-86f6-72273a74329b"} ྫ LVCF@QFSTJTUFOUWPMVNFDMBJN@JOGP &MFNFOU 7BMVF node_disk_written_bytes_total{…,device=“sda”,instance=“demo-netapptest-worker-default-efe1dfcc-bn6q7”, …} ྫ OPEF@EJTL@XSJUUFO@CZUFT@UPUBM
ղܾҊ ‣ OPEF@pMFTZTUFN@999ͷϝτϦΫεΛؒʹڬΈղܾ NPVOUQPJOU͔Β17໊ WPMVNFOBNF Λநग़͠࿈݁ 51 &MFNFOU 7BMVF
kube_persistentvolumeclaim_info{…,namespace=“default”,persistentvolumeclaim=“block-pv- test-0”,storageclass=“standard”,...,volumename="pvc-9639e9ae-de8b-4f24-86f6-72273a74329b"} ྫ LVCF@QFSTJTUFOUWPMVNFDMBJN@JOGP &MFNFOU 7BMVF node_disk_written_bytes_total{…,device=“sda”,instance=“demo-test-worker-default-efe1dfcc-bn6q7”…} ྫ OPEF@EJTL@XSJUUFO@CZUFT@UPUBM &MFNFOU 7BMVF node_filesystem_avail_bytes{…,device=“/dev/sda”,fstype=“ext4”,instance="demo-test-worker-default- efe1dfcc-bn6q7",mountpoint="/var/lib/kubelet/pods/d1267489-a972-414a-9b38-987d3a7ea28c/volumes/ kubernetes.io~csi/pvc-9639e9ae-de8b-4f24-86f6-72273a74329b/mount"...} ྫ OPEF@pMFTZTUFN@BWBJM@CZUFT
݁Ռ 52 sum(irate(node_disk_read_bytes_total[5m])) by (device, instance) + on(device, instance) group_left
(persistentvolume, persistentvolumeclaim, namespace) label_replace(label_replace(node_filesystem_size_bytes{mountpoint=~"/var/lib/kubelet/pods/[^/]*/volumes/ kubernetes.io~csi/[^/]*/mount", fstype=~"ext4|xfs"}, "device", "$1", "device", "/dev/(.*)"), "persistentvolume", "$1", "mountpoint", "/var/lib/kubelet/pods/[^/]*/volumes/kubernetes.io~csi/([^/]*)/mount")*0 * on (persistentvolume) group_left (persistentvolumeclaim, namespace) label_replace(kube_persistentvolumeclaim_info, "persistentvolume", "$1", "volumename", "(.+)") ྫΫΤϦʔ
53 ͏ҰาਐΜͩ
Ϛϧνύε-7.Ͱͷམͱ݀͠ ‣ Ϛϧνύε-7.ͰσόΠε໊͕ஔ͖͑ΒΕΔͨΊ࿈݁Ͱ͖ͳ͍ ઌఔͷྫγϯάϧύεͷΈ༗ޮ 54 &MFNFOU 7BMVF kube_persistentvolumeclaim_info{…,namespace=“default”,persistentvolumeclaim=“block-pv- test-0”,storageclass=“standard”,...,volumename="pvc-fdcf278e-7ba0-44da-831b-2092ffcb2589"}
ྫ LVCF@QFSTJTUFOUWPMVNFDMBJN@JOGP &MFNFOU 7BMVF node_disk_written_bytes_total{…,device=“dm-0”,instance=“demo-test-worker-default-efe1dfcc-bn6q7”…} ྫ OPEF@EJTL@XSJUUFO@CZUFT@UPUBM &MFNFOU 7BMVF node_filesystem_avail_bytes{…,device=“”/dev/mapper/mpatha”,fstype=“ext4”,instance="demo-test-worker- default-efe1dfcc-bn6q7",mountpoint="/var/lib/kubelet/pods/d1267489-a972-414a-9b38-987a407bb12f/ volumes/kubernetes.io~csi/pvc-fdcf278e-7ba0-44da-831b-2092ffcb2589/mount"...} ྫ OPEF@pMFTZTUFN@BWBJM@CZUFT 54
ղܾҊ ‣ OPEF@FYQPSUFSͷ*TTVFΛௐࠪˠະղܾ IUUQTHJUIVCDPNQSPNFUIFVTOPEF@FYQPSUFSJTTVFT ‣ /PEFFYQPSUFSͷUFYUpMFDPMMFDUPSΛ։ൃ 55 # HELP
x_node_mountpoints_info Information about mountpoint in node # TYPE x_node_mountpoints_info gauge x_node_mountpoints_info{mountpoint="/", devname="/dev/vda1", device="vda1", fstype="ext4"} 1 x_node_mountpoints_info{mountpoint="/var/lib/kubelet", devname="/dev/vda1", device="vda1", fstype="ext4"} 1 x_node_mountpoints_info{mountpoint="/var/lib/kubelet/pods/d1267489-a972-414a-9b38-987d3a7ea28c/volumes/ kubernetes.io~csi/pvc-9639e9ae-de8b-4f24-86f6-72273a74329b/mount", devname="/dev/mapper/mpatha", device=“dm-0", fstype="ext4"} 1 ։ൃͨ͠textfile collectorͷग़ྗྫ
݁Ռ 56 sum(irate(node_disk_written_bytes_total[5m])) by (device, instance) + on (device, instance)
group_left (volumename, persistentvolumeclaim, namespace) label_replace(node_filesystem_avail_bytes{fstype=~"ext4|xfs"}, "volumename", "$1", "mountpoint", "/var/lib/ kubelet/pods/[^/]*/volumes/kubernetes.io~csi/([^/]*)/mount") * 0 * on(mountpoint, instance) group_left(device, persistentvolumeclaim, namespace) x_node_mountpoints_info{fstype=~"ext4|xfs"} * on (volumename) group_left (persistentvolumeclaim, namespace) kube_persistentvolumeclaim_info ྫΫΤϦʔ
·ͱΊ ‣ Ϣʔβ͚ʹҰาਐΜͩ17ͷ͍ํΛհ 7PMVNF&YQBOTJPO 7PMVNF4OBQTIPU 7PMVNF$MPOJOH ‣
ཧऀ͚ʹҰาਐΜͩ17Λࢧ͑Δڥߏஙʹ͍ͭͯհ 5PQPMPHZ .POJUPSJOH 57