Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Knative Serving 入門 / kubernetes meetup 13
Ryo Takaishi
September 28, 2018
Technology
2
590
Knative Serving 入門 / kubernetes meetup 13
https://k8sjp.connpass.com/event/100842/
Ryo Takaishi
September 28, 2018
Tweet
Share
More Decks by Ryo Takaishi
See All by Ryo Takaishi
takaishi
2
2.3k
takaishi
2
590
takaishi
1
930
takaishi
2
1.6k
takaishi
2
1.5k
takaishi
0
110
takaishi
5
2.4k
takaishi
8
910
takaishi
7
3.3k
Other Decks in Technology
See All in Technology
sasakendayo
2
450
nkjzm
1
870
ytaka23
5
1.7k
texmeijin
1
370
hgsgtk
4
1.2k
con_mame
4
2k
gkzz
0
290
takaking22
2
520
oyakata2438
0
340
redhatopenshift
0
720
yosuke_furukawa
PRO
48
16k
yuyamada
9
920
Featured
See All Featured
mojombo
358
62k
kneath
219
15k
dotmariusz
94
5.1k
sachag
446
36k
tmm1
61
8.5k
yeseniaperezcruz
302
31k
bkeepers
52
4.2k
jrom
114
7.1k
lara
172
9.5k
philnash
8
510
danielanewman
1
480
mthomps
39
2.3k
Transcript
∁ੴྒ / GMO Pepabo, Inc. 2018-09-28 Kubernetes Meetup #13 ,OBUJWF4FSWJOHೖ
∁ੴ ྒ / @r_takaishi TAKAISHI Ryo https://repl.info/ Belgian beer Ruby,
Go Kubernetes, OpenStack
∁ੴ ྒ / @r_takaishi TAKAISHI Ryo •ιϑτΣΞΤϯδχΞ @ GMOϖύϘ •ΣϒαʔϏεͷج൫ߏஙɾӡ༻
•࠷ۙFluentdͷϓϥάΠϯΛॻ͍͍ͯ·͢ •OpenStackΛͬͨϓϥΠϕʔτΫϥυӡ༻ •Kubernetes on OpenStackڥͷߏங •ؒืूதʂ
,OBUJWF
,OBUJWF4FSWJOH
• Knative ServingͷΞʔΩςΫνϟࢥʹ͍ͭͯ • ಛతͳػೳͷ1ͭͰ͋Δθϩɾεέʔϧʹ͍ͭͯ • ୭Λରͱͨ͠ϓϩμΫτͳͷ͔ʁզʑͲ͏͢Ε͍͍ͷ͔ʁ !6 ࠓ͢͜ͱ
• Knative Eventing • Knative Building • ෦࣮ !7 ࠓ͞ͳ͍͜ͱ
݁
• Knative ServingͷΰʔϧɺPaaS/FaaSͷ֓೦ΛؚΉαʔόʔϨεϫʔΫϩʔ υͷͨΊͷAPIͱπʔϧΛఏڙ͢Δ͜ͱ • ԠతʹΞϓϦέʔγϣϯΛىಈɾεέʔϧ͠ɺར༻͕ͳ͚Εఀࢭ͢ΔΞʔ ΩςΫνϟͰ͋Δ • 20189݄࣌ͰΞʔΩςΫνϟͱAPIͷΈఏڙ͞Ε͍ͯΔঢ়گɻʢ·ͩެ ࣜͰͳ͍͕ʣCLIπʔϧ͕ొ࢝͠Ί͍ͯΔ
• IaaSɺCaaSɺPaaSͱ͍ͬͨج൫ٕज़ͷԆઢ্ʹ͋ΔϓϩμΫτͰɺKnative Ͱͳ͍͍͕ͯ͘ߟ͑ํ͓ͬͯ͘ͱΑ͍ͱࢥ͏ !9 ݁ɿ,OBUJWF4FSWJOHͱԿͳͷ͔
,OBUJWF͕ࢦ͢ΰʔϧ
• Google Cloud Next 2018Ͱൃද͞Εͨʢ20187݄ʣ • αʔόʔϨεΛఏڙ͢ΔϓϥοτϑΥʔϜ • Kubernetes্ʹߏங !11
,OBUJWFʁ
• BuildɿίϯςφΠϝʔδΛϏϧυ͢Δ • EventingɿΠϕϯτͷσϦόϦʔΛཧ͢Δ • ServingɿϦΫΤετۦಈͰίϯςφΛىಈɾεέʔϧ͢Δ !12 ,OBUJWF
None
• Knative ServingͷΰʔϧɺαʔόʔϨεϫʔΫϩʔυͷͨΊͷ APIͱπʔϧΛఏڙ͢Δ͜ͱ • ެࣜͷCLIπʔϧɺGUI·ͩͳ͍ͬΆ͍ • cppforlife/knctlɿίϛϡχςΟϦιʔεͰ։ൃ͞Ε͍ͯΔ༷ • CLI͚ͩͰσϓϩΠτϥϑΟοΫׂ͕࣮ݱՄೳʹͳΔʁ
!14 ,OBUJWF4FSWJOH͕ࢦ͢ΰʔϧ https://github.com/knative/serving/blob/v0.1.1/docs/spec/motivation.md
αʔόʔϨεʁ
!16 • εςʔτϨεͰ͋Δ͜ͱ • ϓϩηεͷεέʔϧΞτ͕ద༻ՄೳͰ͋Δ͜ͱ • ओʹΞϓϦέʔγϣϯϨϕϧʢL7ɺྫ͑HTTPʣͷϦΫΤεττ ϥϑΟοΫʹΑͬͯۦಈ͢Δ͜ͱ αʔόʔϨεɾϫʔΫϩʔυ
• ͪΖΜବͰͳ͍ • KubernetesαʔόʔϨεϫʔΫϩʔυΛѻ͑ΔϦιʔεΛఏڙ͠ ͍ͯΔʢDeploymentɺServiceͳͲʣ • ͔͠͠ɺ͜ΕΒͷϦιʔεΞϓϦέʔγϣϯ։ൃऀ͔Βݟͨͱ͖ɺ ेʹγϯϓϧͱݴ͑ͳ͍ !17 ,VCFSOFUFTͰବͳͷ͔
• Kubernets্ͷΞϓϦέʔγϣϯϓϥοτϑΥʔϜʹڞ௨͕ଟ ͍ • Knativeڞ௨Λඪ४ԽɾΧελϜϦιʔεԽ͢Δ • ͜ΕʹΑΓΞϓϦέʔγϣϯ։ൃऀ͔ΒݟͨΠϯϑϥΛநԽ͢Δ !18 ,VCFSOFUFTͰବͳͷ͔
ߏཁૉ
• CRD(Custom Resource Definitions)Ͱఆٛ • Revision • Configuration • Route
• Service !20 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG
• Revision • ίʔυͱઃఆͷεφοϓγϣοτ • ConfigurationʹΑͬͯ࡞ !21 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration
Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG
• Configuration • ࠷৽ͷRevisionʹ͍ͭͯͷهड़ • Configurationͷߋ৽ʹΑΓɺ৽͍͠ Revision͕࡞ΒΕΔ !22 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route
Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG
• Route • αʔϏε͚ΤϯυϙΠϯτΛఏڙ • ΤϯυϙΠϯτͷޙΖʹ1ͭҎ্ͷ Revision͕ଘࡏ • ύʔηϯςʔδϕʔεͰτϥϑΟοΫ Λׂ
!23 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG
• Service • RouteͱConfigurationΛ࡞͢Δ • جຊతʹServiceΛ͏ͱָ • KubernetesͷDeploymentͱ ReplicaSetͷؔ !24
,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG
• Blue Green DeploymentͷσϞ • ৽͍͠όʔδϣϯͷΞϓϦέʔγϣϯʹঃʑʹτϥϑΟοΫΛྲྀ͠ ͍ͯ͘ !25 %FNP
εέʔϦϯά
• Knative ServingϦΫΤετΛτϦΨʔͱͯ͠ΞϓϦέʔγϣϯΛ ىಈɾεέʔϧΞτ͢Δ • Pod1͋ͨΓͷෛՙ͕ৗʹҰఆʹͳΔΑ͏ʹPodͷΛ૿ݮ͢Δ • Horizontal Auto Scaling
• ϦΫΤετ͕Ұఆظؒͳ͍߹ɺPodͷΛ0ʹͯ͠Ϧιʔεޮ Λ্͛Δ͜ͱͰ͖Δ !27 ,OBUJWFͷεέʔϦϯάͱԿ͔
!28 ΦʔτεέʔϧͷΈ Istio Route Route Revision Pods Deployment Autoscaler Activator
inactive route active route watch first activate metrics resize create/delete
!29 ༻ޠ Knative Serving Revision ϢʔβʔͷίʔυͱઃఆͷεφοϓγϣοτΛѻ͏ΧελϜϦιʔε Knative Serving Route RevisionͷIstioͷΠϯάϨεϧʔϧΛ௨ͯ͠ΫϥΠΞϯτʹެ։͢ΔΧελϜϦιʔε
Kubernetes Deployment Podͱͯ͠ಈ͘ίϯςφͷϥΠϑαΠΫϧΛཧ͢ΔKubernetesͷϦιʔε Knative Serving Autoscaler Ϣʔβʔͷίʔυ͕ಈ͘PodͷෛՙΛࢹ͢ΔͨΊͷDeploymentɻ PodͷෛՙΛҰఆʹอͭΑ͏ʹϢʔβʔίʔυ༻ͷDeploymentͷαΠζΛ૿ݮ͢Δ Knative Serving Activator KnativeͰϦΫΤετ͕ಧ͍ͨ࣌ɺͦΕΛड͚औΔPod͕ͳ͍Մೳੑ͕͋Δɻ ͦ͏͍͏࣌ʹϦΫΤετΛड͚औΔDeploymentɻPodΛىಈ͠ɺϦΫΤετΛϑΥϫʔυ͢Δ Concurrency ॠؒॠؒͰॲཧ͍ͯ͠ΔϦΫΤετͷ
!30 1PE͕ىಈ͍ͯ͠ͳ͍߹ Istio Route Route Revision Pods Deployment Autoscaler Activator
inactive route active route watch first activate metrics PodͷىಈΛࢹ PodΛىಈ͢Δ create/delete resize
!31 1PE͕ىಈ͍ͯ͠Δ߹ Istio Route Route Revision Pods Deployment Autoscaler Activator
inactive route active route watch first activate metrics Pod͕ىಈ͍ͯ͠Δ߹ɺ ϦΫΤετPod AutoscalerPodͷ ϝτϦοΫΛࢹ create/delete resize
!32 1PEͷෛՙ͕ߴ͗͢Δ͗͢Δ߹ Istio Route Route Revision Pods Deployment Autoscaler Activator
inactive route active route watch first activate create/delete metrics resize
• Fast Brain • Pod1ຖͷಉ࣌ཁٻͷਫ४Λҡ࣋͢Δ • ྫɿPod1͕1ඵ͋ͨΓ100ϦΫΤετΛॲཧ͢ΔΑ͏Λ૿ݮ • Slow Brain
• Fast BrainͰ͏ਫ४ΛCPUϝϞϦɺϨΠςϯγͳͲͷ౷ܭʹج͍ͮͯ ఏҊ͢Δ • v0.1.1Ͱະ࣮ʢϋʔυίʔυ͞Ε͍ͯΔʣ !33 "VUPTDBMFSͭͷΛ࣋ͭ
ཧղΛਂΊΔ
Ϧιʔεͱ͔εέʔϧͷΈͱ͔ ݟͤΒΕ͚ͨͲɺ݁ہͲ͏͍͏ͷ ͳͷ
• ॏཁͳͷϦΫΤετͰۦಈ͢Δɺͱ͍͏ • ίϯςφͰநԽ͢ΕͲͪΒಉ͡Α͏ʹۦಈͰ͖Δ • ΞϓϦέʔγϣϯͷ߹ىಈޙϓϩηε͕ಈ͖ଓ͚Δ • ΞΫηε͕ͳ͚ΕϓϩηεΛऴྃ • ϑΝϯΫγϣϯϦΫΤετͰۦಈɺ࣮ߦޙऴྃ
• => FaaS༝དྷͷΠϕϯτۦಈOK !36 ,OBUJWFΞϓϦέʔγϣϯͱϑΝϯΫγϣϯΛ۠ผ͠ͳ͍
ϦΫΤετͰϓϩηε͕ىಈ ΞΠυϧঢ়ଶͳΒϓϩηεΛఀࢭ
͋Εʜʁ͜ͷΈɺ Ͳ͔͜Ͱݟͨ͜ͱ͕͋ΔΑ͏ͳʜʁ
ḪΔ͜ͱલʜ
͏গ͠ḪΖ͏
ḪΔ͜ͱલʜ
'BTU$(*
• CGIɿϦΫΤετຖʹϓϩηεੜɾഁغΛ࣮ߦ • FastCGIɿϦΫΤετຖʹϓϩηεΛੜɺ͍ճ͢͜ͱͰੑೳUpɻΞΠυ ϧঢ়ଶ͕ଓ͍ͨ߹ϓϩηεΛഁغ • KnativeɿॳճϦΫΤετ࣌ʹPodΛੜɺFunctionͰͳ͚Ε͍ճ͢ɻϦ ΫΤετ͕Ұఆظؒಧ͔ͳ͚ΕPodΛऴྃ !43 'BTU$(*
ࣅͨΈͩʂ
• ϓϩΞΫςΟϒੑ • ΞϓϦέʔγϣϯ͕͋Β͔͡Ίىಈ͓ͯ͠Γɺঢ়ଶͷଈ࣌มߋͰ͖ͳ͍͕ߴͳॲཧ͕ Մೳͳੑ࣭ • ىಈͬ͠ͺͳ͠ͳͷͰϦιʔεޮѱ͍ • ࣄલʹαʔόΛىಈͯ͠ΞΫηεʹඋ͑ΔΞϓϩʔν •
ϦΞΫςΟϒੑ • ϦΫΤετʹԠͯ͡ΞϓϦέʔγϣϯΛىಈ͢Δੑ࣭ͷ͜ͱ • ىಈͱఀࢭͷίετ͕͋Δ͕ɺϦιʔεޮΑ͍ • ΞϓϦέʔγϣϯݱ࣮తͳ࣌ؒͰىಈͯ͘͠Δ͜ͱ͕લఏ !45 ϓϩΞΫςΟϒੑͱϦΞΫςΟϒੑ
• ϓϩΞΫςΟϒੑ • ΞϓϦέʔγϣϯ͕͋Β͔͡Ίىಈ͓ͯ͠Γɺঢ়ଶͷଈ࣌มߋͰ͖ͳ͍͕ߴͳॲཧ͕ Մೳͳੑ࣭ • ىಈͬ͠ͺͳ͠ͳͷͰϦιʔεޮѱ͍ • ࣄલʹαʔόΛىಈͯ͠ΞΫηεʹඋ͑ΔΞϓϩʔν •
ϦΞΫςΟϒੑ • ϦΫΤετʹԠͯ͡ΞϓϦέʔγϣϯΛىಈ͢Δੑ࣭ͷ͜ͱ • ΞϓϦέʔγϣϯݱ࣮తͳ࣌ؒͰىಈͯ͘͠Δ͜ͱ͕લఏ • ىಈͱఀࢭͷίετ͕͋Δ͕ɺϦιʔεޮΑ͍ !46 ϓϩΞΫςΟϒੑͱϦΞΫςΟϒੑ •CGIFastCGIɺFaaS͕֘ •FastCGIϦιʔεޮͱੑೳͷཱ྆ͷͨΊҰఆظؒىಈ •FaaSϦΞΫςΟϒੑΛ࣋ͭϓϥοτϑΥʔϜͷҰͭ
• @matsumotoryʹΑΓఏҊ(2017) !47 'BTU$POUBJOFSͱ͍͏ΞʔΩςΫνϟ
• ΠϯελϯεՃॲཧ͕Ͱ͋Δ • ֎෦͔ΒͷఆظతͳࢹΛ༻͍ͨݕͱεέʔϧͩͱཻ͕ૈ͍ • VMͷ߹ɺىಈ͕ಥൃΞΫηεʹؒʹ߹Θͳ͍έʔε͕͋Δ • Ϧιʔεͷར༻ޮͷ͞ • جຊతʹΠϯελϯε͕ىಈɺϦιʔεΛ༗͠ଓ͚Δ
!48 'BTU$POUBJOFSͲͷΑ͏ͳʹର͢ΔఏҊ͔
None
• FastContainerϗεςΟϯάαʔϏεͱ͍͏ྲྀΕͷ্ʹੜ·Εͨߟ ͑ํ • KnativeKubernetesCloud Nativeͱ͍͏ྲྀΕͷ্ʹੜ·Εͨϓ ϩμΫτ • গ͠ҧ͏จ຺͔Βɺಉ͡Α͏ͳͷ͕ొ͖͍ͯͯ͠Δ •
ϦΞΫςΟϒͳϓϥοτϑΥʔϜ͕ࠓޙ૿͑Δʁ !50 ,OBUJWFͱࣅͨΞʔΩςΫνϟଞʹଘࡏ͢Δ
• KnativeԠతʢϦΞΫςΟϒʣʹΞϓϦέʔγϣϯϑΝϯΫγϣϯΛ ىಈ͠ɺෛՙʹԠͯࣗ͡ಈ૿ݮ͢Δ • ΞϓϦέʔγϣϯɺϑΝϯΫγϣϯΛΘͣϦΞΫςΟϒͳΈ͕ࠓޙ૿ ͑ͯ͘ΔͷͰͳ͍͔ʢAmazon Aurora Serverlessʣ • CGI࣌HTTPϦΫΤετ͚͕ͩͩͬͨɺݱ༷ʑͳΠϕϯτʹରͯ͠
ԠతʹॲཧΛߦ͍ͬͯ͘ʢEventingͷൣғͳͷͰׂѪʣ !51 ΞʔΩςΫνϟ·ͱΊ
ϖϧιφ
• αʔϏεΛσβΠϯ͢Δࡍɺλʔήοτͱͯ͠ఆ͢ΔՍۭ ͷϢʔβʔ૾ͷ͜ͱ • KnativeͷλʔήοτͱͳΔϢʔβʔͲ͏͍͏ਓ͔ʁͲ͏͍͏ తϞνϕʔγϣϯΛ͍࣋ͬͯΔͷ͔ • ͜͏͍͏͜ͱΛܾΊ͓ͯ͘͜ͱͰɺKnativeͷϓϩμΫτͱͯ͠ͷํ ੑ͕ϒϨͳ͍Α͏ʹ͢Δ !53
ϖϧιφʁ
• ར༻ऀͱͯ͠DeveloperͱOperatorͷ2छྨʹΘ͔Ε͍ͯΔ • Developer • Operator !54 ,OBUJWF4FSWJOHͷར༻ऀͲ͏͍͏ϖϧιφ͔
• ΠϯϑϥΛҙࣝͤͣʹεςʔτϨεͳΞϓϦέʔγϣϯΛ։ൃɾ࣮ ߦ͢ΔΤϯδχΞ • HobbyistɺBackend SWEɺFull stack SWEɺSREͳͲ • ϢʔβʔετʔϦʔྫ
• ෳͷίʔυΛσϓϩΠ • มߋͷϩʔϧόοΫ • ΞϓϦέʔγϣϯͷࢹ !55 %FWFMPQFS
• Knative ServingͱKubernetesͷಋೖɾཧ৫ϙϦγʔɺηΩϡ ϦςΟύονͷద༻ʹϑΥʔΧε • HobbyistɺCluster administratorɺSecurity EngineerͳͲ • ϢʔβʔετʔϦʔ
• Knative ServingΫϥελʔΛ࡞͢Δ • Ϧιʔεར༻ʹ੍͍ͭͯޚͨ͠Γ՝ۚ͢Δ • ΞϓϦέʔγϣϯͷࠪύονద༻ !56 0QFSBUPS
• ยํͷࢹ͕͚͍ܽͯΔͱɺยํʹෛՙ͕͔͔Δ • ΞϓϦέʔγϣϯ։ൃऀշదʹ։ൃʹઐ೦Ͱ͖Δ • ϓϥοτϑΥʔϜͷӡ༻ଆϓϥοτϑΥʔϜʹઐ೦Ͱ͖Δ !57 ྆ํͷࢹΛҙ͍ࣝͯ͠Δͷ҆৺ײ͕͋Δ
·ͱΊ
• Knative ServingͷΰʔϧɺPaaS/FaaSͷ֓೦ΛؚΉαʔόʔϨε ϫʔΫϩʔυͷͨΊͷAPIͱπʔϧΛఏڙ͢Δ͜ͱ • 20189݄࣌ͰΞʔΩςΫνϟͱAPIͷΈఏڙ͞Ε͍ͯΔঢ় گɻʢ·ͩެࣜͰͳ͍͕ʣCLIπʔϧ͕ొ࢝͠Ί͍ͯΔ • IaaSɺCaaSɺPaaSͱ͍ͬͨج൫ٕज़ͷԆઢ্ʹ͋ΔϓϩμΫτ ͰɺKnativeͰͳ͍͍͕ͯ͘ߟ͑ํ͓ͬͯ͘ͱΑ͍ͱࢥ͏
!59 ·ͱΊ
We are hiring! Senior Software Engineer Software Engineer (Site Reliability)
Senior Software Engineer (Site Reliability)