Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2時間で分かる!Kubernetesとは何なのか / what-is-kubernetes

2時間で分かる!Kubernetesとは何なのか / what-is-kubernetes

Masatoshi Tada

July 16, 2020
Tweet

More Decks by Masatoshi Tada

Other Decks in Technology

Transcript

  1. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTݚम  ΞϓϦέʔγϣϯΤϯδχΞͷͨΊͷ ,VCFSOFUFTجૅ Ϋϥ΢υωΠςΟϒͳΞϓϦέʔγϣϯͷߏஙͱӡ༻ ೔ؒ ▸

    ຊ೔ͷ಺༰͸ݚमͷҰ෦ΛਂງΓͨ͠΋ͷͰ͢ ▸ ݚम಺Ͱ͸ɺຊ೔͸ѻΘͳ͍෯޿͍ػೳΛ ϋϯζΦϯ෇͖ͰֶशͰ͖·͢ʂ ▸ ΋ͪΖΜΦϯϥΠϯ࣮ࢪରԠʂ
  2. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ໨࣍ ▸ ,VCFSOFUFT͸ԿΛ͢Δ΋ͷ͔ ▸ ,VCFSOFUFTͷΞʔΩςΫνϟ ▸ ίϯςφ؅ཧʢ%FQMPZNFOUɺ3FQMJDB4FUɺ1PEʣ

    ▸ Ϋϥελʔ಺Ͱͷ௨৴ʢ4FSWJDFʣ ▸ Ϋϥελʔ֎ͱͷ௨৴ʢ*OHSFTTʣ ▸ ,VCFSOFUFTΛ࢖͏લʹߟ͑Δ΂͖͜ͱ 
  3. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ໨࣍ ▸ ,VCFSOFUFT͸ԿΛ͢Δ΋ͷ͔ ▸ ,VCFSOFUFTͷΞʔΩςΫνϟ ▸ ίϯςφ؅ཧʢ%FQMPZNFOUɺ3FQMJDB4FUɺ1PEʣ

    ▸ Ϋϥελʔ಺Ͱͷ௨৴ʢ4FSWJDFʣ ▸ Ϋϥελʔ֎ͱͷ௨৴ʢ*OHSFTTʣ ▸ ,VCFSOFUFTΛ࢖͏લʹߟ͑Δ΂͖͜ͱ 
  4. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTΛ࢖͏ʹ͸ ▸ ύϒϦοΫΫϥ΢υ ▸ "NB[PO&MBTUJD $POUBJOFS4FSWJDF GPS,VCFSOFUFT

    &,4  ▸ "[VSF,VCFSOFUFT 4FSWJDF ",4  ▸ (PPHMF,VCFSOFUFT &OHJOF (,&  ▸ ΦϯϓϨ ▸ LVCFBEN ▸ 7.XBSF5BO[V,VCFSOFUFT (SJE*OUFHSBUFE&EJUJPO ▸ 3FE)BU0QFO4IJGU ▸ ϩʔΧϧ1$ ▸ %PDLFS ▸ .JOJLVCF
  5. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE <౾஌ࣝ>,VCFSOFUFTͷىݯ#PSH ▸ (PPHMF͕ࣾίϯςφͱͯ͠ಈ͔͍ͯ͠Δ ࣗࣾαʔϏεΛ؅ཧ͢ΔγεςϜ ▸ ಺෦γεςϜͳͷͰ044Ͱ͸ͳ͍ ▸

    (PPHMFʹΑΓ࿦จ΋ެ։͞Ε͍ͯΔ ▸ ݪจIUUQTSFTFBSDIHPPHMFQVCTQVC ▸ ೔ຊޠ༁IUUQTCMPHJOEVDUPSNFFOUSZ  
  6. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTͷόʔδϣϯϙϦγʔ ▸ ໿ϲ݄ʹճɺϚΠφʔόʔδϣϯϦϦʔε ▸ 044Ͱͷαϙʔτର৅ʢόάϑΟοΫε౳ʣ͸ ௚ۙͭͷϚΠφʔόʔδϣϯ ▸

    ྫɿ͕ϦϦʔε͞ΕͨΒɺ ɹɹαϙʔτର৅͸YɺYɺY ▸ ৽͍͠ϝδϟʔϦϦʔε༧ఆʢYYʣ͸ ࠓͷͱ͜Ζແ͠ 
  7. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ओͳ,VCFSOFUFT͕΍Δ͜ͱ ᶃ Πϯϑϥͷந৅Խ ᶄ ϦιʔεʹԠͨ͡ ίϯςφ഑ஔ ᶅ

    ηϧϑώʔϦϯά ᶆ ΦʔτεέʔϦϯά  ᶇ ϩʔϦϯά Ξοϓσʔτ ᶈ αʔϏε σΟεΧόϦ ˍෛՙ෼ࢄ ᶉ ઃఆ஋ͷ؅ཧ
  8. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ᶅηϧϑώʔϦϯά ▸ ཧ૝ͷঢ়ଶͱݱࡏͷঢ়ଶΛൺֱͯ͠ɺ ζϨ͕͋ͬͨΒཧ૝ͷঢ়ଶʹ໭͢  ίϯςφ ᶃʮίϯςφ୆͕

    ɹཧ૝ʯͱࢦఆ ᶄίϯςφ୆ ɹΛ഑ஔ ίϯςφ ίϯςφ ᶅ8PSLFS/PEFʹো֐ൃੜ ᶆζϨΛݕ஌ ɹˠ৽نʹ୆഑ஔ ৽͍͠ ίϯςφ ✨
  9. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ᶆΦʔτεέʔϦϯά ▸ ෛՙঢ়گʢओʹ$16࢖༻཰ʣ ʹΑͬͯɺίϯςφͷ୆਺Λ ࣗಈతʹ૿ݮͤ͞Δ ▸ ୆਺ͷ্ݶɾԼݶɺ

    $16࢖༻཰ͷᮢ஋ͳͲ͸ ઃఆՄೳ ▸ )PSJ[POUBM1PE"VUPTDBMFS ͷ࡞੒͕ඞཁ  ίϯςφ ίϯςφ ίϯςφ ৽͍͠ ίϯςφ ✨ ৽͍͠ ίϯςφ ✨
  10. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ᶇϩʔϦϯάΞοϓσʔτ ▸ ίϯςφͷόʔδϣϯ ΞοϓΛগͣͭ͠ߦ͏ ͜ͱͰɺμ΢ϯλΠϜ ΛθϩʹͰ͖Δ ▸

    Ұ౓ʹγϟοτμ΢ϯ ͢Δ୆਺ͳͲ͸ઃఆՄ ೳ  v1.0 v1.0 v1.0 v1.1 ✨ v1.0 v1.0 v1.1 ✨ v1.1 v1.1 v1.0 v1.1 ✨ v1.1
  11. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ໨࣍ ▸ ,VCFSOFUFT͸ԿΛ͢Δ΋ͷ͔ ▸ ,VCFSOFUFTͷΞʔΩςΫνϟ ▸ ίϯςφ؅ཧʢ%FQMPZNFOUɺ3FQMJDB4FUɺ1PEʣ

    ▸ Ϋϥελʔ಺Ͱͷ௨৴ʢ4FSWJDFʣ ▸ Ϋϥελʔ֎ͱͷ௨৴ʢ*OHSFTTʣ ▸ ,VCFSOFUFTΛ࢖͏લʹߟ͑Δ΂͖͜ͱ 
  12. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ίϯςφͱ1PE ▸ 1PE͸ɺͭҎ্ͷίϯςφΛ ࣋ͭ ▸ ଟ͘ͷέʔεͰ͸ίϯςφͷΈ ▸

    αΠυΧʔͱݺ͹ΕΔͭ໨ͷ ίϯςφΛؚΉ͜ͱ΋͋Δ ▸ ,VCFSOFUFT͸ɺ 1PEΛ࠷খ୯Ґͱͯ͠؅ཧ  Pod ίϯςφ
  13. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTͷશମ૾  kube-apiserver kube-controller -manager kube- scheduler

    etcd .BTUFS/PEF 8PSLFS/PEFT ؅ཧऀPS ։ൃऀ kube- proxy kube let LVCFDUM ίϚϯυ ˞.BTUFS/PEF΋ෳ਺୆Ͱߏ੒Մೳ Pod
  14. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMίϚϯυͱLVCFBQJTFSWFS ▸ ؅ཧऀPS։ൃऀ͸ ᶃ ʮཧ૝ͷঢ়ଶʯΛϚχϑΣετʢ:".-ʣʹهड़ ᶄ ϚχϑΣετΛLVCFDUMίϚϯυͰΞοϓϩʔυ

    ʢ಺෦తʹ͸)551Λ࢖༻ʣ ▸ LVCFBQJTFSWFS͸ ᶅ ϚχϑΣετΛड৴ɾղੳ ᶆ ͦͷσʔλΛFUDEʹอଘ  ྫɿ/HJOYͷ1PE͕୆ɺ ɹɹ.Z42-ͷ1PE͕୆ ಡΈํ͸ ʮΩϡʔϒίϯτϩʔϧʯ
  15. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMίϚϯυͱLVCFBQJTFSWFS  kube-apiserver etcd Ϛχ ϑΣετ ᶃϚχϑΣετ

    ɹΛ࡞੒ ᶄLVCFDUMͰ ɹΞοϓϩʔυ ɹ )551 ᶅϚχϑΣετΛ ɹड৴ɾղੳ ᶆղੳͨ͠ ɹσʔλΛ ɹอଘ
  16. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE FUDE ▸ ʮཧ૝ͷঢ়ଶʯͱ ʮݱࡏͷঢ়ଶʯ͕ อଘ͞Ε͍ͯΔ ▸ :".-Ͱอଘ͞Ε͍ͯ

    Δͱղऍͯ͠΋0, ▸ LVCFBQJTFSWFS͔Β ͷΈΞΫηεՄೳ  kube-apiserver etcd ཧ૝ /HJOY୆ .Z42-୆ ݱࡏ /HJOY୆ .Z42-୆
  17. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFBQJTFSWFS ▸ ,VCFSOFUFTͷ৺ଁ෦ ▸ 3&45GVM8FCαʔϏε ▸ ଞͷίϯϙʔωϯτ͸ɺ

    LVCFBQJTFSWFSΛ௨ͯ͡ FUDE΁ͷ$36%Λߦ͏  kube-apiserver etcd ཧ૝ /HJOY୆ .Z42-୆ ᶅϚχϑΣετΛ ɹड৴ɾղੳ ᶆղੳͨ͠ ɹσʔλΛอଘ
  18. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFTDIFEVMFS ▸ ఆظతʹLVCFBQJTFSWFSʹ ΞΫηεͯ͠ɺ ▸ 8PSLFS/PEF͕ະܾఆͷ 1PE͕ແ͍͔νΣοΫ

    ▸ ະܾఆͳ1PEͷ 8PSLFS/PEFΛܾఆͯ͠ FUDEʹॻ͖ࠐΉ  kube-apiserver etcd kube-scheduler 1PE৘ใ ۭ ˠ/PEF
  19. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDPOUSPMMFSNBOBHFS ▸ ෳ਺ͷ$POUSPMMFSΛ ؅ཧ͍ͯ͠Δ ▸ ۩ମྫ͸ޙड़ ▸

    ֤$POUSPMMFS͸ɺ ఆظతʹ LVCFBQJTFSWFSʹ ΞΫηεͯ͠FUDEʹ $36%Λߦ͍ͬͯΔ  kube-apiserver etcd kube-controller-manager A Cont roller B Cont roller C Cont roller
  20. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTͷશମ૾ ࠶ܝ  kube-apiserver kube-controller -manager kube-

    scheduler etcd .BTUFS/PEF ؅ཧऀPS ։ൃऀ LVCFDUM ίϚϯυ ͜͜·Ͱ 8PSLFS/PEFT kube- proxy kube let Pod
  21. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFMFU ▸ ఆظతʹLVCFBQJTFSWFSʹ ΞΫηεͯ͠ɺ ▸ ࣗ8PSLFS/PEFͰ৽نʹಈ͔͢ 1PE͕ແ͍͔νΣοΫ͠ɺ

    ͋ͬͨΒίϯςφΛ࡞੒͢Δ ▸ ࣗ8PSLFS/PEF಺ͷ֤1PEΛ ؂ࢹ͠ɺݱࡏͷঢ়ଶΛFUDEʹॻ͖ࠐΉ ▸ ֤8PSLFS/PEFʹ͚ͭͩଘࡏ  kube- proxy kube let kube-apiserver etcd ৽͍͠ Pod ✨
  22. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTͷશମ૾ ࠶ܝ  kube-apiserver kube-controller -manager kube-

    scheduler etcd .BTUFS/PEF ؅ཧऀPS ։ൃऀ LVCFDUM ίϚϯυ 8PSLFS/PEFT kube- proxy kube let Pod
  23. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ໨࣍ ▸ ,VCFSOFUFT͸ԿΛ͢Δ΋ͷ͔ ▸ ,VCFSOFUFTͷΞʔΩςΫνϟ ▸ ίϯςφ؅ཧʢ%FQMPZNFOUɺ3FQMJDB4FUɺ1PEʣ

    ▸ Ϋϥελʔ಺Ͱͷ௨৴ʢ4FSWJDFʣ ▸ Ϋϥελʔ֎ͱͷ௨৴ʢ*OHSFTTʣ ▸ ,VCFSOFUFTΛ࢖͏લʹߟ͑Δ΂͖͜ͱ 
  24. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE %FQMPZNFOUɺ3FQMJDB4FUɺ1PE ▸ 3FQMJDB4FU͸ 1PEͷ୆਺Λ؅ཧ ▸ ୆਺Λཧ૝ͷঢ়ଶʹอͭ ▸

    %FQMPZNFOU͸ 3FQMJDB4FUΛ؅ཧ ▸ 1PEͷ಺༰͕มΘͬͨΒ ৽͍͠3FQMJDB4FUΛ࡞Δ ▸ ϩʔϦϯάΞοϓσʔτ΋୲౰  Pod Pod Pod ReplicaSet Deployment
  25. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE %FQMPZNFOUͷϚχϑΣετΛॻ͘  apiVersion: apps/v1 kind: Deployment metadata:

    name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 ͜ͷ%FQMPZNFOUͷ໊લʢ೚ҙʣ 1PEͷ୆਺ ͜ͷ%FQMPZNFOU͸ɺ ͜ͷϥϕϧΛ࣋ͭ1PEΛ؅ཧ͢Δ 1PEͷఆٛ 1PE಺ͷίϯςφΠϝʔδ 1PEʹ෇͚Δϥϕϧ
  26. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ϚχϑΣετϑΝΠϧͷΞοϓϩʔυ ▸ ϑΝΠϧ໊ࢦఆ  $ kubectl apply

    -f ϚχϑΣετϑΝΠϧ໊ $ kubectl apply -f ϑΥϧμ໊ ▸ ϑΥϧμ಺ͷશϚχϑΣετΛΞοϓϩʔυ
  27. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ݱࡏͷঢ়ଶͷऔಘ  $ kubectl get all NAME

    READY STATUS RESTARTS AGE pod/nginx-deployment-5754944d6c-mjw9j 1/1 Running 0 22s pod/nginx-deployment-5754944d6c-t4fpj 1/1 Running 0 22s pod/nginx-deployment-5754944d6c-xv7lm 1/1 Running 0 22s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx-deployment 3/3 3 3 22s NAME DESIRED CURRENT READY AGE replicaset.apps/nginx-deployment-5754944d6c 3 3 3 22s
  28. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ݱࡏͷঢ়ଶ  Pod nginx-deployment -xxx-bbb ReplicaSet nginx-deployment-xxx

    Deployment nginx-deployment Pod nginx-deployment -xxx-aaa Pod nginx-deployment -xxx-ccc
  29. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 1PEͷΈͷ৘ใऔಘ  $ kubectl get pods NAME

    READY STATUS RESTARTS AGE nginx-deployment-5754944d6c-mjw9j 1/1 Running 0 4m7s nginx-deployment-5754944d6c-t4fpj 1/1 Running 0 4m7s nginx-deployment-5754944d6c-xv7lm 1/1 Running 0 4m7s ▸ Լه΋Մೳ ▸ kubectl get replicasets ▸ kubectl get deployments
  30. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ݸผ1PEͷৄࡉ৘ใऔಘ  $ kubectl describe pod/nginx- deployment-5754944d6c-mjw9j

    Name: nginx-deployment-5754944d6c-mjw9j Namespace: default Priority: 0 Node: docker-desktop/192.168.65.3 Start Time: Xxx, xx xxx 2020 17:02:57 +0900 Labels: app=nginx pod-template-hash=5754944d6c Annotations: <none> Status: Running IP: 10.1.0.93 IPs: <none> Controlled By: ReplicaSet/nginx-deployment-5754944d6c ...
  31. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMBQQMZ͔Β1PE͕࡞ΒΕΔ·Ͱ  kube-apiserver etcd Ϛχ ϑΣετ ᶃ%FQMPZNFOUͷ

    ɹϚχϑΣετ ɹΛ࡞੒ ᶄLVCFDUMBQQMZ ᶅϚχϑΣετΛ ɹड৴ɾղੳ ᶆ%FQMPZNFOUΛ ɹFUDEʹ࡞੒ %FQMPZ NFOU ✨
  32. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMBQQMZ͔Β1PE͕࡞ΒΕΔ·Ͱ  Deployment Controller kube-controller-manager kube-apiserver etcd

    %FQMPZ NFOU ReplicaSet Controller 3FQMJDB 4FU ✨ ᶇ%FQMPZNFOU࡞੒Λݕ஌ ɹˠ3FQMJDB4FUΛ࡞੒
  33. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMBQQMZ͔Β1PE͕࡞ΒΕΔ·Ͱ  Deployment Controller kube-controller-manager kube-apiserver etcd

    %FQMPZ NFOU ReplicaSet Controller 3FQMJDB 4FU ᶈ3FQMJDB4FU࡞੒Λݕ஌ ɹˠ1PEΛඞཁݸ਺࡞੒ 1PE 1PE 1PE ✨
  34. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMBQQMZ͔Β1PE͕࡞ΒΕΔ·Ͱ  kube-scheduler kube-apiserver etcd %FQMPZ NFOU

    3FQMJDB 4FU ᶉ8PSLFS/PEF͕ ɹະࢦఆͷ1PEΛݕ஌ ɹˠܾఆͯ͠ॻ͖ࠐΉ 1PE ۭ ˠ /PEF 1PE ۭ ˠ /PEF 1PE ۭ ˠ /PEF
  35. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMBQQMZ͔Β1PE͕࡞ΒΕΔ·Ͱ  kube-apiserver etcd %FQMPZ NFOU 3FQMJDB

    4FU ᶊࣗ8PSLFS/PEFѼͷ ɹ1PEΛݕ஌ ɹˠ1PEΛ৽ن࡞੒ 1PE ۭ ˠ /PEF 1PE ۭ ˠ /PEF 1PE ۭ ˠ /PEF kube- proxy kube let ৽͍͠ Pod ✨
  36. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ໨࣍ ▸ ,VCFSOFUFT͸ԿΛ͢Δ΋ͷ͔ ▸ ,VCFSOFUFTͷΞʔΩςΫνϟ ▸ ίϯςφ؅ཧʢ%FQMPZNFOUɺ3FQMJDB4FUɺ1PEʣ

    ▸ Ϋϥελʔ಺Ͱͷ௨৴ʢ4FSWJDFʣ ▸ Ϋϥελʔ֎ͱͷ௨৴ʢ*OHSFTTʣ ▸ ,VCFSOFUFTΛ࢖͏લʹߟ͑Δ΂͖͜ͱ 
  37. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 1PEؒͰͲ͏΍ͬͯ௨৴͢Δʁ ▸ ֤1PE͝ͱʹ*1ΞυϨεׂ͕Γ౰ͯΒΕΔ  $ kubectl get

    pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-5754944d6c-mjw9j 1/1 Running 0 20h 10.1.0.98 docker-desktop <none> <none> nginx-deployment-5754944d6c-t4fpj 1/1 Running 0 20h 10.1.0.99 docker-desktop <none> <none> nginx-deployment-5754944d6c-xv7lm 1/1 Running 0 20h 10.1.0.101 docker-desktop <none> <none>
  38. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 4FSWJDFͰαʔϏεσΟεΧόϦˍෛՙ෼ࢄ  Service nginx- service 10.x.x.x (8080)

    http://nginx-service:8080 ˞஫ɿਤ͸ΠϝʔδͰ͢ ʢৄࡉ͸ޙड़ʣ Pod nginx 10.y.y.a (80) Pod nginx 10.y.y.b (80) Pod nginx 10.y.y.c (80) ผͷPod ෛՙ ෼ࢄ
  39. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 4FSWJDFͷϚχϑΣετΛॻ͘  apiVersion: v1 kind: Service metadata:

    name: nginx-service spec: type: ClusterIP selector: app: nginx ports: - port: 8080 targetPort: 80 ͜ͷ4FSWJDF͸ɺ ͜ͷϥϕϧΛ࣋ͭ1PEʹ ෛՙ෼ࢄ͢Δ 1PEͷϙʔτ൪߸ 4FSWJDFͷϙʔτ൪߸ 4FSWJDFͷ໊લʢ೚ҙʣ
  40. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMBQQMZ͢Δͱ  $ kubectl get service nginx-service

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-service ClusterIP 10.96.181.49 <none> 8080/TCP 6m54s ▸ 4FSWJDF͕࡞੒͞Εɺ*1ΞυϨεͱϙʔτ൪߸͕ ׂΓ౰ͯΒΕΔ ▸ ஫ɿ͜Ε͸ϓϥΠϕʔτ*1ΞυϨεͳͷͰɺ ɹɹ,VCFSOFUFTΫϥελʔ಺ͷΈͰ͔͠࢖͑ͳ͍
  41. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 1PEؒ௨৴Λࢼ͢ ▸ Ұ࣌తͳ$FOU04ͷ1PEΛ࡞Γɺ ͔ͦ͜ΒDVSMͰΞΫηε͢Δ  $ kubectl

    run temp --image=centos \ --rm --restart=Never -it \ -- curl http://nginx-service:8080 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> Cent OS nginx nginx nginx Service
  42. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 4FSWJDF࡞੒͔Βෛՙ෼ࢄ·Ͱ  kube-apiserver etcd Ϛχ ϑΣετ ᶃ4FSWJDFͷ

    ɹϚχϑΣετ ɹΛ࡞੒ ᶄLVCFDUMBQQMZ ᶅϚχϑΣετΛ ɹड৴ɾղੳ ᶆ4FSWJDFΛFUDEʹ࡞੒ *1ΞυϨε΋෇Ճ͞ΕΔ 4FSWJDF ✨ %FQMPZ NFOU 3FQMJDB 4FU 1PE
  43. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 4FSWJDF࡞੒͔Βෛՙ෼ࢄ·Ͱ  kube- proxy kube let kube-apiserver

    etcd 4FSWJDF %FQMPZ NFOU 3FQMJDB 4FU 1PE Pod ᶇ4FSWJDF࡞੒Λݕ஌ ɹˠ4FSWJDFͱ෼ࢄର৅1PEͷ ɹɹ*1ΞυϨεɾϙʔτ൪߸Λऔಘ ɹˠJQUBCMFTʹ௥Ճ ˞JQUBCMFTҎ֎ͷ৔߹΋͋Γ·͢
  44. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE JQUBCMFT 8JLJQFEJBΑΓ ▸ JQUBCMFT͸ɺ-JOVYʹ࣮૷͞ΕͨύέοτϑΟϧ λϦϯά͓ΑͼωοτϫʔΫΞυϨεม׵ /"5 ػೳͰ͋Δ/FUpMUFSʢෳ਺ͷ/FUpMUFSϞ

    δϡʔϧͱ࣮ͯ͠૷͞Ε͍ͯΔʣͷઃఆΛૢ࡞͢ ΔίϚϯυͷ͜ͱɻ/FUpMUFS͸ɺ͍ΘΏΔϑΝ ΠΞ΢Υʔϧ΍ϧʔλͱͯ͠ͷ໾ׂΛՌͨ͢ɻ  https://ja.wikipedia.org/wiki/Iptables
  45. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 4FSWJDF࡞੒͔Βෛՙ෼ࢄ·Ͱ  kube- proxy Pod temp DNS

    ᶈ%/4ʹ4FSWJDF໊ͷ ɹ໊લղܾΛґཔ ɹˠ4FSWJDFͷ*1ΞυϨεΛऔಘ
  46. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE 4FSWJDF࡞੒͔Βෛՙ෼ࢄ·Ͱ  kube- proxy Pod temp kube-

    proxy Pod nginx ᶉ4FSWJDFͷ ɹ*1ϙʔτ൪߸ ɹʹΞΫηε ᶊJQUBCMFTΛ࢖ͬͯɺ ɹѼઌ*1ɾϙʔτΛ ɹ͍ͣΕ͔ͷ1PEͷ ɹ΋ͷʹมߋ kube- proxy Pod nginx kube- proxy Pod nginx ᶋมߋ͞ΕͨѼઌʹΞΫηε
  47. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE  kube-proxy Pod temp kube- proxy kube-

    proxy kube- proxy 1PE OHJOY  1PE OHJOY  1PE OHJOY  ServiceͷIPΞυϨεͱϙʔτ൪߸ =10.9.9.9:99 ͦͷService͕؅ཧ͢ΔPodͷ IPΞυϨεͱϙʔτ൪߸ ʹ10.0.0.1:80, 10.0.0.2:80, 10.0.0.3:80 ᶉ http://10.9.9.9:99/ ᶋ http://10.0.0.2:80/ ᶊѼઌIPΞυϨεɾϙʔτ൪߸ ɹΛॻ͖׵͑ʢ3ͭΛॱ൪ʹ࢖͏ʣ
  48. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ໨࣍ ▸ ,VCFSOFUFT͸ԿΛ͢Δ΋ͷ͔ ▸ ,VCFSOFUFTͷΞʔΩςΫνϟ ▸ ίϯςφ؅ཧʢ%FQMPZNFOUɺ3FQMJDB4FUɺ1PEʣ

    ▸ Ϋϥελʔ಺Ͱͷ௨৴ʢ4FSWJDFʣ ▸ Ϋϥελʔ֎ͱͷ௨৴ʢ*OHSFTTʣ ▸ ,VCFSOFUFTΛ࢖͏લʹߟ͑Δ΂͖͜ͱ 
  49. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE *OHSFTTͰΫϥελʔ֎௨৴  Ϋϥ΢υϕϯμʔͷ ϩʔυόϥϯαʔ Ingress Controller Service

    A Service B Pod A Pod A Pod B Pod B 63-ʹΑͬͯ ৼΓ෼͚Δ ෛՙ ෼ࢄ ෛՙ ෼ࢄ
  50. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE /(*/9*OHSFTT$POUSPMMFSͷΠϯετʔϧ (,&  $ kubectl create clusterrolebinding

    cluster-admin-binding --clusterrole cluster-admin --user $(gcloud config get- value account) $ kubectl apply -f https:// raw.githubusercontent.com/kubernetes/ ingress-nginx/controller-v0.34.0/deploy/ static/provider/cloud/deploy.yaml
  51. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ΠϯετʔϧͰ࡞ΒΕΔ΋ͷ  Ϋϥ΢υϕϯμʔͷ ϩʔυόϥϯαʔ NGINX Ingress Controller

    (Pod) Service A Service B Pod A Pod A Pod B Pod B ˞ଞʹ΋৭ʑ࡞ΒΕΔͷͰ͕͢ɺॏཁͳͷ͸͜ͷͭͰ͢
  52. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE *OHSFTTͷϚχϑΣετΛॻ͘  kind: Ingress apiVersion: networking.k8s.io/v1beta1 metadata:

    name: echo-ingress labels: app: echo annotations: kubernetes.io/ingress.class: nginx spec: rules: - http: paths: - path: /a backend: serviceName: echo-a-service servicePort: 80 - path: /b backend: serviceName: echo-b-service servicePort: 80 ͜ͷαʔϏεʹ ϧʔςΟϯά ͜ͷ63-͕ϦΫΤετ͞ΕͨΒ *OHSFTTͷ໊લʢ೚ҙʣ ͜ͷ63-͕ϦΫΤετ͞ΕͨΒ ͜ͷαʔϏεʹ ϧʔςΟϯά
  53. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE LVCFDUMBQQMZ͢Δͱ  $ kubectl get ingress NAME

    HOSTS ADDRESS PORTS AGE echo-ingress * 34.71.xxx.xxx 80 63m ▸ *OHSFTT͕࡞੒͞Εɺ*1ΞυϨεͱϙʔτ൪߸͕ ׂΓ౰ͯΒΕΔ ▸ ͜Ε͸Ϋϥ΢υϕϯμʔͷϩʔυόϥϯαʔͷ *1ΞυϨε
  54. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ΞΫηε  $ curl 34.71.xxx.xxx/a A(echo-a-deployment-dd985bcfc-fcjpf) $

    curl 34.71.xxx.xxx/a A(echo-a-deployment-dd985bcfc-qk6hp) $ curl 34.71.xxx.xxx/b B(echo-b-deployment-68854964db-zjcmh) $ curl 34.71.xxx.xxx/b B(echo-b-deployment-68854964db-qrr2n) ▸ 63-ʹΑͬͯҧ͏4FSWJDFʹϧʔςΟϯά͞Ε͍ͯΔ
  55. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ໨࣍ ▸ ,VCFSOFUFT͸ԿΛ͢Δ΋ͷ͔ ▸ ,VCFSOFUFTͷΞʔΩςΫνϟ ▸ ίϯςφ؅ཧʢ%FQMPZNFOUɺ3FQMJDB4FUɺ1PEʣ

    ▸ Ϋϥελʔ಺Ͱͷ௨৴ʢ4FSWJDFʣ ▸ Ϋϥελʔ֎ͱͷ௨৴ʢ*OHSFTTʣ ▸ ,VCFSOFUFTΛ࢖͏લʹߟ͑Δ΂͖͜ͱ 
  56. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTͰϚϧνΫϥ΢υʁ ▸ ,VCFSOFUFT͚ͩͰ͸ϚϧνΫϥ΢υ͸࣮ݱͰ͖ͳ͍ ▸ ϕϯμʔಠࣗαʔϏεΛ࢖ͬͯͨΒΞ΢τ ▸ ׬શʹ͸Ϋϥ΢υϕϯμʔϩοΫΠϯΛճආͰ͖ͳ͍

    ▸ ίϯςφϥϯλΠϜͷҧ͍ͳͲ ▸ ϚϧνΫϥ΢υͰՄ༻ੑ͸ඞͣ͠΋্͕Βͳ͍ ▸ ;0;0ͷݕ౼ఀࢭࣄྫ IUUQTRJJUBDPNTPOPUTJUFNTGEFFBFF 
  57. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ,VCFSOFUFTͷӡ༻ମ੍͸੔͍ͬͯ·͔͢ʁ ▸ ,VCFSOFUFTઐ೚͕ෳ਺໊ඞཁ ▸ ͸ͯͳͷఫୀࣄྫ IUUQTXXXBUNBSLJUDPKQBJUBSUJDMFT OFXTIUNM

    ▸ ϲ݄ʹճͷΞοϓσʔτʹ଱͑ΒΕΔ͔ʁ ▸ ΞϓϦέʔγϣϯͷςετɺؔ࿈044ͷςετɺ 7.ͷ04ΞοϓσʔτɺϑΝʔϜ΢ΣΞͷΞοϓσʔτ ͳͲ΋ඞཁ 
  58. $ $"4"3&"- *OD"MMSJHIUTSFTFSWFE ࠷ޙͷ·ͱΊ ▸ ,VCFSOFUFTͷ΍Δ͜ͱɾ΍Βͳ͍͜ͱΛ೺Ѳ͠Α ͏ ▸ ֤ίϯϙʔωϯτ͕ࣗ཯తʹಈ͘͜ͱͰɺ ݁Ռతʹશମ্͕ख͘ಈ͍͍ͯΔ

    ▸ 1PEɾ3FQMJDB4FUɾ%FQMPZNFOUɾ4FSWJDFɾ *OHSFTTΛ·ͣཧղ͠Α͏ ▸ Կ͕͍ͨ͠ͷ͔ɺຊ൪౤ೖલʹ͔ͬ͠Γߟ͑Α͏