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
950
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
入門!ClusterAPI 〜 k8s クラスターも k8s API で管理したい 〜 / k8s_meetup_31
takaishi
3
3.6k
CloudNativeへの道 リーダーシップとフォロワーシップ / 201911-cndjp13
takaishi
2
740
ClusterAPI v1alpha1 → v1alpha2 / k8s_meetup_23
takaishi
1
1.2k
実録!CloudNativeを 目指した230日 / cloud-native-days-tokyo-2019
takaishi
2
2k
Consul Connect and Kubernetes Integration / cloud native meetup tokyo 7
takaishi
2
1.9k
ソフトウェアエンジニア の楽しみ / 2018-pepaboudon
takaishi
0
160
Ansible、Terraform、Packerで作るSelf-Hosted Kubernetes / JKD1812
takaishi
5
3.3k
大規模ウェブサービスの成長に伴うデプロイ手法の変化から見る技術と文化 / openstackdays2018
takaishi
8
1k
こんなこともあろうかと、 サーバーは予め増やして置いた 〜アクセス頻度予測を用いてサーバーを自動増減する「計画的スケーリング」その後〜 / LINE Developer Meetup #32
takaishi
7
3.6k
Other Decks in Technology
See All in Technology
NGINXENG JP#2 - 1-NGINX-エンジニアリング勉強会-きょうの見どころ
hiropo20
0
120
IoT から見る AWS re:invent 2022 ― AWSのIoTの歴史を添えて/Point of view the AWS re:invent 2022 with IoT - with a history of IoT in AWS
ma2shita
0
290
YouTuber も編集マンもクラウド使って編集しよう。クラウド編集のキホン
eijikominami
0
130
モバイルモーションキャプチャーデバイス「mocopi」を軽く試してみた / IoTLT vol.95 (新年会IoTLTラジオ)
you
0
100
Deep Neural Networkの共同学習
hf149
0
360
ユーザーテストガイドライン VERSION 2.0
kouzoukaikaku
0
1.7k
メドレー エンジニア採用資料/ Medley Engineer Guide
medley
3
5.2k
Logbii(ログビー) 会社紹介
logbii
0
180
CES_2023_FleetWise_demo.pdf
sparkgene
0
130
SignalR を使ったアプリケーション開発をより快適に!
nenonaninu
0
720
AWS re:Invent 2022で発表された新機能を試してみた ~Cloud OperationとSecurity~ / New Cloud Operation and Security Features Announced at AWS reInvent 2022
yuj1osm
1
230
2年で10→70人へ! スタートアップの 情報セキュリティ課題と施策
miekobayashi
1
720
Featured
See All Featured
Scaling GitHub
holman
453
140k
Practical Orchestrator
shlominoach
178
8.9k
Building Your Own Lightsaber
phodgson
96
4.9k
Support Driven Design
roundedbygravity
88
8.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
270
12k
Design by the Numbers
sachag
271
18k
Faster Mobile Websites
deanohume
295
29k
Making Projects Easy
brettharned
102
4.8k
Side Projects
sachag
451
37k
Ruby is Unlike a Banana
tanoku
93
9.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
jQuery: Nuts, Bolts and Bling
dougneiner
57
6.6k
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)