Kubernetesを知る/Introduction Kubernertes

93bc8fb48f57c11e417dad9d26a2fb8a?s=47 petitviolet
November 06, 2018

Kubernetesを知る/Introduction Kubernertes

社内勉強会で使った資料。

- kubernetesとは
- 概念・用語
- アーキテクチャ
- 基本操作
- 運用に向けて

93bc8fb48f57c11e417dad9d26a2fb8a?s=128

petitviolet

November 06, 2018
Tweet

Transcript

  1. ,VCFSOFUFTΛ஌Δ !QFUJUWJPMFU

  2. "HFOEB w LVCFSOFUFTͱ͸ w ֓೦ɾ༻ޠ w ΞʔΩςΫνϟ w جຊૢ࡞ w

    ӡ༻ʹ޲͚ͯ
  3. LVCFSOFUFT

  4. LVCFSOFUFTͷಡΈํ ͘ʔ͹Ͷ͍ͯ͌͢ ͘ʔ΂ΔͶ͍ͯ͌͢ ͖Ύʔ͹Ͷ͍ͯ͌͢ ͖Ύʔ΂ΔͶ͍ͯ͌͢

  5. LVCFSOFUFTJP

  6. LVCFSOFUFT *UHSPVQTDPOUBJOFSTUIBUNBLFVQBOBQQMJDBUJPOJOUP MPHJDBMVOJUTGPSFBTZNBOBHFNFOUBOEEJTDPWFSZ w ίϯςφͷΦʔέετϨʔγϣϯπʔϧ w ུশLT

  7. LVCFSOFUFT w 4FSWJDF%JTDPWFSZ w -PBE#BMBODJOH w 3FTJMJFODF w TFMGIFBMJOH w

    BVUPTDBMJOH w %FQMPZ w SPMMCBDL
  8. LVCFSOFUFT w .JDSPTFSWJDFTΛߏ੒͢Δͷʹ࢖ΘΕΔ w 1PE /PEF 4FSWJDF *OHSFTTͳͲͷάϧʔϐϯά w ΞϓϦέʔγϣϯΛಈ͔͢ͷʹඞཁͳίϯς

    φ܈Λ·ͱΊͯ؅ཧग़དྷΔ w 4FSWJDF%JTDPWFSZͱ͔Λ͏·͘࢖͏ͱ .JDSPTFSWJDFTΛڠௐͤ͞Δ͜ͱ͕ग़དྷΔ
  9. טΈࡅ͘ͱ w %PDLFS ίϯςφΛ͍͍ײ͡ʹ؅ཧ͢Δ܅ w 7.ͰΫϥελΛ૊ΜͰɺͦͷ্Ͱ͍͍ײ͡ʹ ෳ਺ͷίϯςφΛڠௐͤ͞Δ w ίϯςφ͕Ϋϥογϡͨ͠Βࣗಈճ෮ w

    ॲཧ͕௥͍෇͔ͳ͚Ε͹Φʔτεέʔϧ
  10. LVCFSOFUFT w ෺ཧαʔόˠ7.ˠίϯςφ w αʔόΛந৅తʹѻ͑͏Α͏ʹͳ͖ͬͯͨ w ଟػೳͳ7.αʔόˠ୯ػೳͳίϯςφ w ࠷ۙͷ.JDSPTFSWJDFTͳྲྀΕ΋͋Δ w

    ୯ػೳͳίϯςφΛͲ͏૊Έ߹Θͤͯಈ͔͢ ͔ɺεέδϡʔϦϯάͨ͠Γ͢Δͷ͕େม w ͦ͜ͰLVCFSOFUFTͱ͍͏ྲྀΕ w %PDLFS4XBSN͸ૣ͗ͨ͢ʜ
  11. ͦͯ͠JNNVUBCMFJOGSBTUSBDUVSF w ઃఆϑΝΠϧ͸શͯZBNM w એݴతͳهड़͕Մೳ w LVCFDUMFEJUͱ໋͍ͬͨྩత ͳίϚϯυ͸ۃྗ࢖Θͣɺ ZBNMΛॻ͍ͯBQQMZ͢ΔͷΛ ৺͕͚Α͏

  12. LVCFSOFUFTͷ ֓೦༻ޠ

  13. ֓೦༻ޠ w 1PE w 3FQMJDB4FU w %FQMPZNFOU w %BFNPO4FU w

    4FSWJDF w *OHSFTT w 7PMVNF w $POpH.BQ 4FDSFU w /BNFTQBDF w FUD
  14. 1PE w ͭҎ্ͷίϯςφͷݻ·Γ w ྫɿ8FCΞϓϦ /HJOY qVFOUE w LVCFSOFUFTͰ؅ཧ͢Δର৅ͷ࠷খ୯Ґ w

    ஀ੜࢮ๢Λͱ΋ʹ͢Δϓϩηε͕1PE w DQVNFNPSZͳͲͷϦιʔε੍ݶΛ͔͚Δ
  15. 3FQMJDB4FU w 1PEͷ؅ཧΛ͢Δ w 1PEΛෳ੡ͯ͠Ұఆͷݸ਺Λอͭ w 1PE͕ࢮΜͩΒ৽͘͠1PEΛཱͯΔ w ௚઀࢖͏͜ͱ͸جຊతʹͳ͘ɺ%FQMPZNFOUͷ ࢠཁૉͱͯࣗ͠ಈͰ࡞੒͞ΕΔ

    w ੲ͸3FQMJDBUJPO$POUSPMMFSͱ͔ݴΘΕ͚ͯͨͲɺ ͍·͸3FQMJDB4FU͕ਖ਼͍͠
  16. %FQMPZNFOU w σϓϩΠ͢Δͱ͖͸΄ͱΜͲ͜Ε w 1PEͷ؅ཧΛ͢Δ3FQMJDB4FUͷ؅ཧΛ͢Δ w 3FQMJDB4FUͷػೳΛ࢖ͬͨσϓϩΠ w 1PEͭͣͭೖΕସ͑σϓϩΠ w

    CMVFHSFFO SFECMBDL σϓϩΠ w ϛεͬͨΒSPMMCBDL
  17. %BFNPO4FU w /PEFʹ͚ͭͩσϓϩΠ͍ͨ͠1PEΛ؅ཧ w qVFOUE EBUBEPHΒ΁ΜͰ࢖ΘΕΔ w ಉҰ/PEFʹͨ͘͞Μ͍Βͳ͍΍ͭ w Ͳͷ/PEFʹσϓϩΠ͢Δ͔΋બ୒Ͱ͖Δ

    w -BCFMͱ͔"OOPUBUJPOΛ࢖͏
  18. 4FSWJDF w LVCFSOFUFT্Ͱಈ͘ίϯςφ΁ͷΞΫηε w 1PEʹΞΫηε͢ΔͨΊͷ໊લղܾͷ࢓૊Έ w 3FQMJDB4FU΍%FQMPZNFOU಺ͷ1PEʹ΋ಧ͘ w JQUBCMFTͰؤு͍ͬͯΔ ࠷৽൛ͩͱ*174

     w $MVTUFS*1 /PEF1PSU -PBE#BMBODFS͕සग़ w $MVTUFS*1LTΫϥελ಺ʹดͨ͡4FSWJDF w /PEF1PSU/PEFͷ͋ΔQPSUΛQSPYZ͢Δ w -PBE#BMBODFS--#
  19. *OHSFTT w --# w )551 T -# w 4FSWJDFͷҰछͰ͸ͳͯ͘ผͷίϯϙʔωϯτ w

    ֤Ϋϥ΢υͱ౷߹͞Ε͍ͯΔ΋ͷΛ࢖͏͜ͱ ͕ଟ͍͔΋ w /HJOYΛ*OHSFTTͱͯ͠࢖ͬͨΓ΋ग़དྷΔ
  20. 7PMVNF w Ϋϥελ্ͰσʔλΛѻ͏ͨΊͷ΋ͷ w ϑΝΠϧγεςϜ΋&#4΋/'4ͱ͔΋࢖͑Δ w ֤Ϋϥ΢υͷσΟεΫʹରԠ͍ͯ͠Δ w 1FSTJTUFOU7PMVNO$MBJNͱ1FSTJTUFNU7PMVNO౳ Λ૊Έ߹ΘͤͯϘϦϡʔϜΛϚ΢ϯτ͢Δ

    w ϗετͷσΟϨΫτϦ΍UFNQσΟϨΫτϦΛ 1PEʹϚ΢ϯτ͢Δ͜ͱ΋Մೳ
  21. $POpH.BQ4FDSFU w $POpH.BQ؀ڥม਺ͳͲͷઃఆ w 4FDSFUػີ৘ใ w $POpH.BQΑΓݟ͑ͮΒ͍ w ͕ɺผʹTFDVSFͰ΋ͳ͍ CBTFͯ͠Δ͚ͩ

  22. $POpH.BQ4FDSFU w 7PMVNFͱͯ͠Ϛ΢ϯτͰ͖Δ w ϛυϧ΢ΣΞͷDPOG͸$POpH.BQͰ؅ཧՄೳ $POpH.BQ %FQMPZNFOU

  23. /BNFTQBDF w ͦͷ໊ͷ௨Γ໊લۭؒ w LTΫϥελΛԾ૝తʹ෼཭͢Δ w /BNFTQBDFΛ௒͑ͨ௨৴͕ग़དྷͳ͍ w LVCFTZTUFN LVCFQVCMJD

    EFGBVMU͕جຊ w QSPEVDUJPO TUBHJOH w BQJ CBUDI w ͳͲ੾Γޱ͸ࣗ༝
  24. LVCFSOFUFTͷΞʔΩςΫνϟ

  25. LTͷΞʔΩςΫνϟ w NBTUFS DPOUSPMQMBOF ͱXPSLFSϊʔυ w Ϋϥ΢υͷϑϧϚωʔδυLTαʔϏε͸ NBTUFSϊʔυΛ؅ཧͯ͘͠Ε͍ͯΔ w NBTUFSͷ৑௕ߏ੒΍όʔδϣϯΞοϓ౳

    w جຊతʹ͸XPSLFSϊʔυ͚ͩߟ͑Ε͹0,
  26. IUUQTFOXJLJQFEJBPSHXJLJ,VCFSOFUFT

  27. IUUQTLVCFSOFUFTJPEPDTDPODFQUTBSDIJUFDUVSFDMPVEDPOUSPMMFS

  28. w LVCFBQJTFSWFS w LTͷ"1*Ͱɺ΄΅શͯͷίϯϙʔωϯτ͕BQJTFSWFSΛܦ༝͢Δ w LVCFDUMͷड͚ޱʹ΋ͳ͍ͬͯΔ w LVCFEOT $PSF%/4 

    w LTΫϥελ಺Ͱͷ໊લղܾ΍αʔϏεσΟεΧόϦʹ࢖༻͞ΕΔ%/4 w LVCFDPOUSPMMFSNBOBHFS w EFQMPZNFOUDPOUSPMMFSͳͲΛ࣮ߦ؂ࢹΛߦ͏ w LVCFMFU w ֤/PEFʹσϓϩΠ͞Εɺ%PDLFSͱ࿈ܞͯ͠ίϯςφͷ؅ཧΛߦ͏ w LVCFQSPYZ w ֤/PEFʹσϓϩΠ͞ΕɺτϥϑΟοΫΛసૹͯ͠4FSWJDFΛػೳͤ͞Δ w LVCFTDIFEVMFS w 1PEͷεέδϡʔϦϯά w FUDE w ෼ࢄ,74ͰɺLTΫϥελ಺ͷ৘ใ͕શͯอଘ͞ΕΔ
  29. LVCFSOFUFTͷجຊૢ࡞

  30. LVCFSOFUFTͷجຊૢ࡞ w LVCFDUM w ͖ΎʔͿ͜ΜͱΖʔΔ  w DSFEFOUJBM w Ϋϥ΢υϓϩόΠμ͔Βೝূ৘ใΛऔಘ

    w DPOUFYU w ͲͷLTΫϥελʹΞΫηε͢Δ͔ $ kubectl config get-contexts
  31. LVCFSOFUFTͷجຊૢ࡞ $ alias kubectl=ku # お好みで $ ku get <resource|all>(e.g.

    pod, deployment, ns) $ ku describe <resource>/<name>(e.g. deploy/my-api) $ ku logs <pod名> $ ku logs --tail 1000 -f <pod名> # 最新1000行 + 垂れ流し $ ku apply -f <yamlファイル> # createではなくこちら $ ku config get-contexts $ ku config use-context <context名> $ ku config set-context <context名> —namespace=<namespace>
  32. LVCFSOFUFTͷσόοά $ ku describe <resource>/<name> # まず見るべき情報 $ ku get

    -v=6 pod # 詳細なログを表示できる $ ku exec -it <pod名> /bin/bash # docker execと同じ $ ku port-forward <pod名> <local port>:<remote port> $ ku run -it <container> <cmd> # docker runと同じ $ ku proxy # dashboardを見る $ ku cp <local path> pod:<remote path> # scpと同じ
  33. LVCFSOFUFTΛӡ༻͢ΔͨΊʹ

  34. LTΛӡ༻͢ΔͨΊʹ w ஌͓͖͍ͬͯͨ͜ͱ w 1PEΛͲ͏࡞Δ͔ w ઃఆͰ͖Δ͜ͱ ZBNMͰԿΛॻ͔͘  w

    ϞχλϦϯά w σόοά w πʔϧ
  35. 1PEΛͲ͏࡞Δ͔

  36. 1PEΛͲ͏࡞Δ͔ w GBDUPSBQQ IUUQTGBDUPSOFUKB

  37. None
  38. 1PEΛͲ͏࡞Δ͔ w 1PEͷݪଇ w ੜ͖ࢮʹΛͱ΋ʹ͢Δີ݁߹ͳϓϩηε܈ w ίϯςφࣗମ͸جຊతʹϓϩηεͷΈ w 8FC"QQ /HJOY

    qVFOUEͳΒίϯςφ w ࠶ར༻Մೳͳίϯςφ͸੾Γग़͢ w 4JEF$BSύλʔϯͱ͔ݺ͹ΕΔ w 8FC"QQ /HJOY Ͱίϯςφʹ͠ͳ͍
  39. 1PEΛͲ͏࡞Δ͔ w ઃఆϑΝΠϧ͸֎͔Βࠩ͠ࠐΊΔΑ͏ʹ͢Δ w $POpH.BQͰϑΝΠϧΛ؅ཧͯ͠Ϛ΢ϯτ w OHJOYDPOGͱ͔BQQMJDBUJPODPOGͱ͔ w Πϝʔδ࠶࡞੒Ͱ͸ͳͯ͘$POpHॻ͖׵͑

  40. ઃఆͰ͖Δ͜ͱ

  41. ઃఆͰ͖Δ͜ͱ w ZBNMͰઃఆͰ͖Δͷ͸ެࣜEPDTΛ·ͣಡΉ w ஌͓͍ͬͯͨํ͕͍͍΍ͭ w JNBHF1VMM1PMJDZ JNBHF1VMM4FDSFU w WPMVNFͷϚ΢ϯτͷ࢓ํ

    w ϔϧενΣοΫ MJWFOFTTSFBEJOFTTQSPCF  w NFNPSZDQVͷSFRVFTUMJNJU
  42. MJWFOFTTSFBEJOFTTQSPCF w LTಛ༗ͳࢮ׆؂ࢹ w ίϚϯυ࣮ߦɺIUUQϦΫΤετͳͲͰνΣοΫ͢Δ w MJWFOFTT w ੜ͖ͯΔ͔Ͳ͏͔νΣοΫ w

    ͩΊͩͬͨΒ1PE࠶ىಈ w SFBEJOFTT w αʔϏεՔಇͰ͖Δ͔νΣοΫ w 1PE࠶ىಈ͸͞Εͳ͍͕τϥϑΟοΫ΋ఀࢭ
  43. MJWFOFTTSFBEJOFTTQSPCF w LTಛ༗ͳࢮ׆؂ࢹ w ίϚϯυ࣮ߦɺIUUQϦΫΤετͳͲͰνΣοΫ͢Δ w MJWFOFTT w ੜ͖ͯΔ͔Ͳ͏͔νΣοΫ w

    ͩΊͩͬͨΒ1PE࠶ىಈ w SFBEJOFTT w αʔϏεՔಇͰ͖Δ͔νΣοΫ w 1PE࠶ىಈ͸͞Εͳ͍͕τϥϑΟοΫ΋ఀࢭ
  44. SFRVFTUTMJNJUT w Ϧιʔεͷཁٻͱ੍ݶ w ࣮ࡍʹSFRVFTUͨ͠෼Λ͖ͬͪΓ࢖͏Θ͚Ͱ͸ͳ͘ɺ σϓϩΠͷ࣌ʹνΣοΫ͞ΕΔ w $16ͷMJNJU௒ա͸஗͘ͳΔ w NFNPSZͷMJNJU௒ա͸00.ͰLJMM͞ΕΔ

    w 1PEͷઃఆʹΑͬͯ͸ࣗಈͰ࠶ىಈ͞ΕΔ w 2P4΋͋Θͤͯ஌͓ͬͯ͘ͱྑ͍ w #FTU&GGPSU#VSTUBCMF(VBSBOUFFE https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
  45. SFRVFTUTMJNJUT w $16 w ίΞ਺ϛϦίΞඵΛࢦఆ͢Δ w ίΞN w NFNPSZ w

    ϝϏόΠτͰࢦఆ͠Α͏ w .J#,# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
  46. ϞχλϦϯά

  47. ϞχλϦϯά w LVCFDUMUPQ w %BUBEPHΛ%BFNPO4FUͰ͍Εͯ؂ࢹ w LVCFTUBUFNFUSJDTܦ༝Ͱৄࡉ৘ใʹΞΫηε

  48. ϞχλϦϯά w ϊʔυ )PTU  w ྫ -"ͱ͔σΟεΫ༰ྔͱ͔ w ίϯςφ

    w ྫ 1PE಺ͷ%PDLFSίϯςφͷ$16 w LVCFSOFUFT w ྫ %FQMPZNFOU഑ԼͰSFBEZͳ1PE਺
  49. πʔϧ

  50. πʔϧ w LVCFDUM w લड़ͷLVCFSOFUFTͷඪ४$-*πʔϧ w LVTUPNJ[F w σϓϩΠ͢Δ؀ڥ͝ͱʹZBNMΛੜ੒ w

    TUFSO w ϩάΛ͍͍ײ͡ʹΈΔ w LVCFDUYLVCFOT w DPOUFYUOBNFTQBDFΛ੾Γସ͑ w NJOJLVCFEPDLFSGPSNBD w ϩʔΧϧʹLVCFSOFUFTΫϥελߏங
  51. LVTUPNJ[F w LVCFSOFUFTTJHTLVTUPNJ[F w ؀ڥ͝ͱʹมߋ͍ͨ͠ઃఆ஋Λ؅ཧ w ؀ڥ͝ͱʹ༻ҙ͞ΕͨઃఆϑΝΠϧΛϚʔδ ͯ͠ڊେͳZBNMΛੜ੒͢Δ

  52. $ # yamlを生成(標準出力) $ kustomize build overlays/development/ $ # yaml生成

    + kubectl apply $ kustomize build overlays/production/ \ | kubectl apply -f -
  53. TUFSO w XFSDLFSTUFSO w LVCFDUMMPHTͱҧͬͯෳ਺1PEͷϩάΛ·ͱΊ ͯྲྀ͢͜ͱ͕ग़དྷΔ $ stern <pod query>

    $ stern --tail 1000 my-api
  54. ͍͞͝ʹ

  55. ͍͞͝ʹ ৮ͬͯΈͳ͍ͱΘ͔Βͳ͍ͷͰɺ৮ͬͯΈͯ͘ ͍ͩ͞ MPDBMʹNJOJLVCFEPDLFSGPSNBD(,&ͰLTΫ ϥελΛ্ཱͪ͛ͯ%FQMPZNFOU΍4FSWJDFΛಈ ͔ͨ͠ΓEBTICPBSEΛݟͨΓ͢Δͷ͕ྑ͍Ͱ͢

  56. 5IBOLZPV