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
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
920
VM時代からコンテナ時代へストレージ管理の移り変わり
ysakashita
9
8.4k
Kubernetes時代のストレージ
ysakashita
1
750
Persistent Volumeのはじめの一歩
ysakashita
2
1.1k
Other Decks in Technology
See All in Technology
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
490
omasushiというライブラリを作った
polidog
PRO
0
220
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
180
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
180
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
100
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.3k
Geolonia の開発現場における AIの活用について
miya0001
0
100
20260912_スクラムにジェネラリストは必要か
ryugen04
0
400
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.6k
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
160
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
820
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
Featured
See All Featured
How to make the Groovebox
asonas
2
2.4k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Tell your own story through comics
letsgokoyo
1
1.1k
Mind Mapping
helmedeiros
1
360
AI: The stuff that nobody shows you
jnunemaker
PRO
9
990
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Crafting Experiences
bethany
1
330
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Raft: Consensus for Rubyists
vanstee
141
7.7k
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