Firecracker とは何か/what is Firecracker
by
ryo nakamaru
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Firecracker ͱԿ͔ AWS ͳͥܰྔ VM Λ࡞Γ ࢲ͔ͨͪͦ͜ΒԿΛڗडͰ͖Δͷ͔ JAWS-UG ίϯςφࢧ෦ #13 Dec 21, 2018 Ryo NAKAMARU, SUPINF Inc.
Slide 2
Slide 2 text
SUPINF Inc τϐοΫ 2 • AWS ͳͥ Firecracker Λ࡞ͬͨͷ͔ • Firecracker ͱԿ͔ • ࢲͨͪ Firecracker ʹԿΛظ͠ɺͲ͏ߩݙͰ͖Δͷ͔ • ͜Ε͔Β Fargate Ͳ͏มΘΔͷ͔
Slide 3
Slide 3 text
SUPINF Inc 3 AWS ͳͥ Firecracker Λ࡞ͬͨͷ͔
Slide 4
Slide 4 text
SUPINF Inc Lambda ैདྷ EC2 ϕʔε 4 ηΩϡϦςΟඞਢʂ࣮ߦίϯςΩετɺ·ͣ EC2 Ͱ͠Α͏ ɹ Hardware ɹ Host OS ɹ Hypervisor ɹ Sandbox ɹ Lambda runtime ← EC2 ɹ Guest OS Ϛϧνςφϯτ AWS ΞΧϯτ ؔ ʢϨϕϧʣ ɹ Our code ɾݫີͰ࣮͋Δ ख๏ ɾͳΔͰϦϦʔε ͔ͨͬͨ͠
Slide 5
Slide 5 text
SUPINF Inc Lambda ैདྷ EC2 ϕʔε 5 ඞવతʹ EC2 ΠϯελϯεͷىಈɺͦͷͨΊͷϦιʔε֬อ͕ى͜Δ ɹ ɹ ɹ ɹ ɹ ɹ λ ɹ ɹ ɹ λ ɹ ɹ ɹ λ ɹ A ΞΧϯτ ɹ ɹ B ΞΧϯτ C ΞΧϯτ ɾىಈ͕͍͜ͱ͕͋Δ ɾϦιʔεར༻ʹແବ͕ଟ͍ ͳͷͰɾɾ ɹ ɹ ɹ λ ɹ ɹ ɹ λ
Slide 6
Slide 6 text
SUPINF Inc ࣍ੈͷαʔόʔϨεج൫͕΄͍͠ 6 EC2 Λىಈ͍ͯͯ͠ඇޮ • ىಈ࣌ؒ • Ϧιʔεར༻ޮ 1 ϓϩηε͕ݫີʹͰ͖Ε͍͍
Slide 7
Slide 7 text
SUPINF Inc Firecracker Ͱ࣮ݱ͢Δ৽ߏ 7 ܰྔͳ VM ͱɺߴͳ Hypervisor ͕͋Εɾɾ ɹ Hardware ɹ Host OS ɹ Sandbox ɹ Lambda runtime ɹ Our code Ϛϧνςφϯτ ؔ ɹ Hypervisor ɹ Guest OS ɹ Hardware ɹ Host OS ɹ Hypervisor ɹ Sandbox ɹ Lambda runtime ɹ Guest OS Ϛϧνςφϯτ AWS ΞΧϯτ ؔ ʢϨϕϧʣ ɹ Our code ݟ͠ʂ
Slide 8
Slide 8 text
SUPINF Inc 8 ɹ ɹ ɹ ɹ ɹ λ ɹ A ɾฏۉىಈ࣌ؒͷॖ ɾϦιʔεΛ࠷େݶ༗ޮ׆༻Ͱ͖Δ Firecracker Ͱ࣮ݱ͢Δ৽ߏ ܰྔͳ VM ͱɺߴͳ Hypervisor ͕͋Εɾɾ ɹ ɹ ɹ λ ɹ B ɹ ɹ ɹ λ ɹ B ɹ ɹ ɹ λ ɹ C ɹ ɹ ɹ λ ɹ C .. ɹ ࣍ੈ Hypervisor ɹ ɹ ɹ λ ɹ D
Slide 9
Slide 9 text
SUPINF Inc 2018 ݱࡏɺฏߦՔಇதɾɾʂ 9 EC2 Ϟʔυ ɹ Hardware ɹ Host OS ɹ Hypervisor ɹ Sandbox ɹ Lambda runtime ɹ Guest OS Ϛϧνςφϯτ AWS ΞΧϯτ ؔ ɹ Our code ɹ Hardware ɹ Host OS ɹ Sandbox ɹ Lambda runtime ɹ Our code Ϛϧνςφϯτ ؔ ɹ Hypervisor ɹ Guest OS Firecracker Ϟʔυ ➕
Slide 10
Slide 10 text
SUPINF Inc ͜͜·Ͱͷ → youtube.com/watch?v=QdzV04T_kec 10
Slide 11
Slide 11 text
SUPINF Inc 11 Firecracker ͱԿ͔
Slide 12
Slide 12 text
SUPINF Inc “ίϯςφͷͨΊͷ” QEMU ସͰ͢ 12 1 Firecracker ϓϩηεͰ 1 microVM Λ୲ … ɹ ɹ Hardware CPU, Storage, Network card, … ɹ Host kernel KVM ɹ ɹ ɹ Firecracker ɹ Guest kernel microVM ͜Ε
Slide 13
Slide 13 text
SUPINF Inc 13 Firecracker VM Λىಈ͢Δͷ͕ࣄʂ Ϣʔβʔ Lambda ͏ͧʙ Lambda / Fargate ͜͏ಈ͍͍ͯΔʢໝʣ
Slide 14
Slide 14 text
SUPINF Inc Lambda / Fargate ͜͏ಈ͍͍ͯΔʢໝʣ 14 Ϣʔβʔ 1. AWS API αʔόʔϨε / ECS ίϯτϩʔϧϓϨΠϯ Firecracker VM Λىಈ͢Δͷ͕ࣄʂ * αʔόʔϨεଆઌͷಈըͰجຊߏΛެ։ࡁ A Serverless Journey: AWS Lambda Under the Hood https://www.youtube.com/watch?v=QdzV04T_kec
Slide 15
Slide 15 text
SUPINF Inc ɹ 15 ɹ Host kernel KVM Ϣʔβʔ Firecracker VM Λىಈ͢Δͷ͕ࣄʂ ϗετ͝ͱʹଘࡏ͢ΔͰ͋Ζ͏ Ṗ Agent ʹ Lambda ͷൃՐΛґཔ Ṗ Agent 2. ൃՐґཔ Lambda / Fargate ͜͏ಈ͍͍ͯΔʢໝʣ αʔόʔϨε / ECS ίϯτϩʔϧϓϨΠϯ
Slide 16
Slide 16 text
SUPINF Inc ɹ 16 ɹ Host kernel KVM Ϣʔβʔ Firecracker VM Λىಈ͢Δͷ͕ࣄʂ Firecracker Ṗ Agent 4. Firecracker ىಈ 3. μϯϩʔυ Ṗ Agent S3 / ECR ͔Β ϢʔβʔίʔυΛर͍ͭͭ Firecracker ΛҰͭىಈ ʢ͜ͷϝϞϦ͕ 5 MiB ະຬʣ Lambda / Fargate ͜͏ಈ͍͍ͯΔʢໝʣ αʔόʔϨε / ECS ίϯτϩʔϧϓϨΠϯ
Slide 17
Slide 17 text
SUPINF Inc ɹ 17 ɹ Host kernel KVM Ϣʔβʔ Firecracker VM Λىಈ͢Δͷ͕ࣄʂ Firecracker Ṗ Agent 5. VM ઃఆɾىಈࢦࣔ Ϣʔβʔίʔυͷ࣋ͪࠐΈؚΊ Firecracker ͕ VM Λىಈ ʢVM Ͱ /sbin/init ϓϩηε͕ ɹΔ·Ͱ͕ 125 ms Ҏʣ ɹ Guest kernel microVM Application Lambda / Fargate ͜͏ಈ͍͍ͯΔʢໝʣ αʔόʔϨε / ECS ίϯτϩʔϧϓϨΠϯ
Slide 18
Slide 18 text
SUPINF Inc ͦͷଞಛͱɺͦͷඞવੑ 18 AWS ͕ҎԼͷػೳ܈Λ crosvm ʹՃ࣮ͨ͠ͷͳͥͩͱࢥ͍·͢ʁ Firecracker ɹ Guest kernel microVM Application ɾࢦࣔ REST API Ͱड͚Δ ɾϝλσʔλ ཧ ɾσόΠεΤϛϡϨʔγϣϯ ɹɹ- ϨʔτϦϛοτ͋Γ ɾPICs, IOAPIC & PIT ɾetc..
Slide 19
Slide 19 text
SUPINF Inc ଓ Firecracker ͱԿ͔ 19 firecracker-containerd
Slide 20
Slide 20 text
SUPINF Inc firecracker-containerd (FC) 20 ࣍ੈαʔόʔϨεج൫ͷຊ໋ʂʁ • Firecracker Λ ίϯςφඪ४༷ʹै͍ར༻͢Δ ͨΊͷΈ ‣ ΠϯλʔϑΣΠεʹ Λར༻ ‣ VM ىಈϑΝΠϧͷ࣋ͪࠐΈඪ४తͳ͓࡞๏ʹै͏ • Firecracker ීٴͷ͞Βʹઌɺͪ͜Β͕ຊ໋ߏͳͷͰײ ‣ ͍ͣΕΑΓඒ͘͠ɺΑΓޮతͰɺΑΓ͍ߏʹ containerd
Slide 21
Slide 21 text
SUPINF Inc ɹ FC ܦ༝Ͱͷ Docker ίϯςφىಈ 21 ʙ ΑΓ҆શʹ Docker ίϯςφΛϗετ͢ΔͨΊʹ ʙ Firecracker ͍ͭΘΕΔ͔ ͝ʙ
Slide 22
Slide 22 text
SUPINF Inc ɹ 22 containerd Firecracker ECS / EKS ͳͲ ࢦࣔܥ౷ FC ܦ༝Ͱͷ Docker ίϯςφىಈ ʙ ΑΓ҆શʹ Docker ίϯςφΛϗετ͢ΔͨΊʹ ʙ
Slide 23
Slide 23 text
SUPINF Inc ɹ 23 containerd FC snapshotter Firecracker ReadOnly ͳ Docker Πϝʔδ͔Β r/w Մೳɺ ͔ͭ Firecracker ͷى ಈ͢Δ VM ʹύεε ϧʔՄೳͳσόΠεͱ ͯ͠εφοϓγϣοτ Λ࡞ ECS / EKS ͳͲ ࢦࣔܥ౷ FC ܦ༝Ͱͷ Docker ίϯςφىಈ ʙ ΑΓ҆શʹ Docker ίϯςφΛϗετ͢ΔͨΊʹ ʙ
Slide 24
Slide 24 text
SUPINF Inc ɹ 24 FC runtime containerd FC snapshotter Firecracker ຊདྷ runc ͕σϑΥ ϧτͰ͋Δ runtime (containerd-shim) Λ FC runtime ʹ͢Δ ͜ͱͰɺίϯςφΛ ΒͤΔ VM ىಈΛ Firecracker ʹࢦࣔ ECS / EKS ͳͲ ࢦࣔܥ౷ FC ܦ༝Ͱͷ Docker ίϯςφىಈ ʙ ΑΓ҆શʹ Docker ίϯςφΛϗετ͢ΔͨΊʹ ʙ
Slide 25
Slide 25 text
SUPINF Inc ɹ ɹ 25 FC runtime containerd FC snapshotter microVM runc FC agent Firecracker VM ͕ඵͰىಈ ECS / EKS ͳͲ ࢦࣔܥ౷ FC ܦ༝Ͱͷ Docker ίϯςφىಈ ʙ ΑΓ҆શʹ Docker ίϯςφΛϗετ͢ΔͨΊʹ ʙ
Slide 26
Slide 26 text
SUPINF Inc ɹ ɹ 26 FC runtime containerd FC snapshotter microVM runc FC agent Firecracker vsock ܦ༝Ͱ VM ͷΤʔδΣϯτʹɺ runc Ͱ Docker ίϯ ςφΛىಈ͢ΔΑ ͏ ࢦࣔ ECS / EKS ͳͲ ࢦࣔܥ౷ FC ܦ༝Ͱͷ Docker ίϯςφىಈ ʙ ΑΓ҆શʹ Docker ίϯςφΛϗετ͢ΔͨΊʹ ʙ
Slide 27
Slide 27 text
SUPINF Inc ɹ ɹ 27 FC runtime containerd FC snapshotter microVM runc FC agent Firecracker ECS / EKS ͳͲ ࢦࣔܥ౷ FC ܦ༝Ͱͷ Docker ίϯςφىಈ ʙ ΑΓ҆શʹ Docker ίϯςφΛϗετ͢ΔͨΊʹ ʙ
Slide 28
Slide 28 text
SUPINF Inc FC ݱࡏͷঢ়گ 28 ઈࢍ։ൃதʂʂʂ https://github.com/firecracker-microvm/firecracker/blob/master/docs/experimental-vsock.md https://github.com/firecracker-microvm/firecracker-containerd/issues ͜ͷঢ়ଶͰ͢Ͱʹຊ൪ར༻ ͞Ε͍ͯΔͱࢥ͍͍ɾɾ
Slide 29
Slide 29 text
SUPINF Inc ͱ͜ΖͰ͜ͷߏɺݟ֮͑͋Γ·ͤΜ͔ʁ 29 ɹ ɹ FC runtime containerd FC snapshotter microVM runc FC agent Firecracker ECS / EKS ͳͲ ࢦࣔܥ౷
Slide 30
Slide 30 text
SUPINF Inc ͱ͜ΖͰ͜ͷߏɺݟ֮͑͋Γ·ͤΜ͔ʁ 30 ɹ ɹ FC runtime containerd FC snapshotter microVM runc FC agent Firecracker ECS / EKS ͳͲ ࢦࣔܥ౷ ݻ༗໊ࢺҧ͏ͷͷɺ ߏͱͯࣅ͍ͯΔ .. Kata Containers .. ??
Slide 31
Slide 31 text
SUPINF Inc طଘιϑτΣΞͱͷकඋൣғΛൺֱ 31 ʢFirecracker ୯ͱ gVisor ͳΒซ༻Ͱ͖ͦ͏ʣ ɹ Hardware ɹ Host OS ɹ Hypervisor ɹ Guest OS ɹ Sandbox ɹ Application gVisor Firecracker Firecracker, KVM & firecracker+containerd QEMU, KVM & Kata Containers
Slide 32
Slide 32 text
SUPINF Inc Kata Containers QEMU ͱԿ͕ҧ͏ͷʁ 32 ίϯςφΛΒͤΔ͜ͱΛલఏʹߟ͑͠ɺ ɾ࠷ܰྔ / ࠷ʹͩ͜Θͬͯ·͢ ɾηΩϡϦςΟʹͩ͜Θͬͯ·͢ ɾAWS ͷج൫ʹඞཁͳػೳἧ͑·ͨ͠ʢҙ༁ʣ ͱͷ͜ͱ https://firecracker-microvm.github.io/
Slide 33
Slide 33 text
SUPINF Inc 33 ࢲͨͪ Firecracker ʹԿΛظ͠ Ͳ͏ߩݙͰ͖Δͷ͔
Slide 34
Slide 34 text
SUPINF Inc OSS 34 • Firecracker ε ‣ crosvm (Chromium OS ͷ VMM) ىݯ → Rust & ͖ࠩͬͱࠓޙ࠷খݶ ‣ Υον͢Δʹͯ͠ GPU / Inferentia ͷΤϛϡϨʔγϣϯ͋ͨΓɾɾʁ • firecracker-containerd ε ‣ ࢲͷ༧͕ਖ਼͚͠Εɾɾຊ໋ͳ্ʹ։ൃ్্ʂߩݙͷνϟϯεʂʂ ‣ ͔ͬͪ͜͠ Go Ͱ͢ΑΈͳ͞Μ Lambda / Fargate ج൫ΛΈΜͳͰ࡞ΕΔʂͳΜͳΒΦϯϓϨͰ͑ɾɾ
Slide 35
Slide 35 text
SUPINF Inc Firecracker ͷ͡Ίํ 35 • GitHub Ͱ docs / issues / release notes ΛΈΑ͏ ‣ ΈΜͳͷࣦഊཤྺରॲ๏͕͢Ͱʹͨ͘͞Μ • Slack ʹ༗༻ͳใଟ͍ • Nested Virtualization ڥԼͰಈ͘Αε ‣ GCP ← f1.micro ͳΒແྉ͑ͯ $0.0076 / hour ʙ ‣ Azureε
Slide 36
Slide 36 text
SUPINF Inc Firecracker ͷ͡Ίํ 36 1. ϕΞϝλϧ͔ωετ͞ΕͨԾڥͰ Linux ͷ KVM Λ༗ޮԽ 2. ΧʔωϧͱϧʔτϑΝΠϧγεςϜΛͲ͔͔͜Β࣋ͬͯ͘Δ 3. VM ͰωοτϫʔΫΛ͍͍ͨ / ύεεϧʔ͍ͨ͠σόΠε͕͋Ε४උ 4. A Ͱ Firecracker Λىಈ 5. B ͔Β REST API Λ௨ͯ͡ Firecracker ʹ VM ͷઃఆɾىಈΛࢦࣔ 6. A ଆͰ VM ʹଓ͞ΕΔ
Slide 37
Slide 37 text
SUPINF Inc 37 ͜Ε͔Β Fargate Ͳ͏มΘΔͷ͔
Slide 38
Slide 38 text
SUPINF Inc Fargate ج൫Λݕূͯ͠Έͨ 38 API ͷԠΛಡΈɺCreatedAt ͔Β PullStartedAt ʹͳΔ·Ͱͷ࣌ؒΛܭଌ ɹɹ// ҎԼͷεΫϦϓτͰ֤Ϧʔδϣϯ 5 ճࢼߦ ɹɹ$ when=$(date '+%Y%m%d%H%M') && mkdir “${when}" ɹɹ$ for region in us-east-1 us-east-2 us-west-2 \ ɹɹɹɹɹɹeu-west-1 eu-central-1 ap -northeast-1 \ ɹɹɹɹɹɹap -southeast-1 ap -southeast-2; do ɹɹɹɹecs-task-runner --region "${region}" run alpine:3.8 --command env \ ɹɹɹɹɹɹ--extended-output > "${when}/${region}".json 2>&1 ɹɹdone
Slide 39
Slide 39 text
SUPINF Inc Fargate ج൫Λݕূͯ͠Έͨ 39 EC2 Ϟʔυʁ Firecracker Ϟʔυ͚ͩͲεέʔϧΞτͨ͠ʁ ఆࠔ ..
Slide 40
Slide 40 text
SUPINF Inc • Firecracker ͷਁಁʢFC ʹͳΔ͔ո͍͠..ʣ • ENI Ξλονʹվળͷஹ͠ 2019 ʹظͰ͖Δ͜ͱ 40 VM ࣗମͷىಈ & ENI ΞλονߴԽ https://www.slideshare.net/AmazonWebServices/a-serverless-journey-aws-lambda-under-the-hood-srv409r1-aws-reinvent-2018
Slide 41
Slide 41 text
SUPINF Inc SUPINF Ͱͷ࠷ۙͷ Fargate ར༻ྫ 41 • ຊ൪αΠτɺRedash ͳͲͷཧπʔϧ • CI: αʔϏεͱಉ VPC ͔Βͷ DB ϚΠάϨʔγϣϯ / API e2e ςετ ‣ pottava/ecs-task-runner Ͱಉظతʹ Fargate Λར༻ ‣ πʔϧΛ Docker ʹ͢Ε CI ͱશ͘ಉ༷ͷςετΛϩʔΧϧͰ • Docker Πϝʔδͷ੬ऑੑνΣοΫ ‣ Clair DB ͝ͱ Fargate ʹࡌͤͯͳ͍
Slide 42
Slide 42 text
Presented by
Slide 43
Slide 43 text
தؙ ྑ @pottava • CTO at SUPINF Inc • Solutions Architect at Rescale, Inc. • JAWS-UG ίϯςφࢧ෦ɺAI ࢧ෦ӡӦ Profile 43
Slide 44
Slide 44 text
SUPINF Inc 44
Slide 45
Slide 45 text
Containerize your app! 45 • Ϋϥυ / ίϯςφ ΛڧΈʹͨ͠डୗ։ൃӡ༻ɺίϯαϧςΟϯά • 2015 ͔Β Docker ͷຊ൪ӡ༻Λ։࢝ɾ๛ͳ CI / CD ࣄྫ • εϐϯϑɺͱಡΈ·͢ɾɾ
Slide 46
Slide 46 text
SUPINF Inc 46
Slide 47
Slide 47 text
Cloud HPC with 47 • Ϋϥυ HPC γϛϡϨʔγϣϯϓϥοτϑΥʔϜͷఏڙ • 2011 ॳ಄ʹઃཱɺPeter Thiel Microsoft ͔Βग़ࢿ • εέʔϥϒϧͳγϛϡϨʔγϣϯػցֶशΛʂ
Slide 48
Slide 48 text
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ :) ࢀߟɿ • AWS re:Invent 2018: A Serverless Journey: AWS Lambda Under the Hood ( https://www.youtube.com/watch?v=QdzV04T_kec ) • The Nitro Project: Next-Generation EC2 Infrastructure - AWS Online Tech Talks ( https://www.youtube.com/watch?v=eWFEJmsddV0 ) • Firecracker: Secure and fast microVMs for serverless computing ( https://github.com/firecracker-microvm/firecracker ) • firecracker-containerd: firecracker-containerd enables containerd to manage containers as Firecracker microVMs ( https://github.com/ firecracker-microvm/firecracker-containerd ) re:Invent ͰूΊ͖ͯͨ εςοΧʔΓ·͢ʙʂ