Slide 1

Slide 1 text

CLOUD NATIVE DAYS TOKYO 2023 AYA IGARASHI @LADICLE FINOPS! KARPENTERʹΑΔ K8Sίετ࡟ݮͷಓ

Slide 2

Slide 2 text

FinOps! 72% OF COMPANIES HAVE A DEDICATED FINOPS TEAM. SOURCE: FLEXERA 2023 STATE OF THE CLOUD REPORT

Slide 3

Slide 3 text

Source: Flexera 2023 State of the Cloud Report “WASTED AVG. 28% OF CLOUD COSTS”

Slide 4

Slide 4 text

FinOpsʹ͓͚Δίετͷ࠷ దԽ͸୯ʹҰ൪͍҆Πϯϑ ϥΛ࢖͏ͱ͍͏ҙຯ͚ͩͰ ͸ͳ͍ɻ ෆཁϦιʔε࡟আ౳ͷ Πϯϑϥίετ࡟ݮ WHAT IS COST OPTIMIZATION? IT DOES NOT JUST MEAN SAVING INFRASTRUCTURE EXPENSES ӡ༻ޮ཰Խ(ࣗಈԽ)ʹΑΔ ਓతίετ࡟ݮ ΠϯϑϥͷίετΛ҆͘Ͱ ͖ͨͱͯ͠΋ɺͦΕΛҡ࣋ ͢ΔͨΊʹଟ͘ͷखಈΦϖ Ϩʔγϣϯ͕ඞཁʹͳΔͱ ϏδωεʹूதͰ͖ͳ͍ɻ Մ༻ੑ޲্ʹΑΔ ػձଛࣦͷ௿ݮ (≒ ച্૿Ճ) Πϯϑϥͷ͚҆ͩ͞Λ௥ٻ ͯ͠ɺαʔϏε͕ఀࢭͨ͠ Γɺ඼࣭͕ྼԽͯ͠͠·͏ ͱɺϏδωεͷػձଛࣦ͕ ੜ·Εͯ͠·͏ɻ

Slide 5

Slide 5 text

FinOpsʹ͓͚Δίετͷ࠷ దԽ͸୯ʹҰ൪͍҆Πϯϑ ϥΛ࢖͏ͱ͍͏ҙຯ͚ͩͰ ͸ͳ͍ɻ ෆཁϦιʔε࡟আ౳ͷ Πϯϑϥίετ࡟ݮ WHAT IS COST OPTIMIZATION? IT DOES NOT JUST MEAN SAVING INFRASTRUCTURE EXPENSES ӡ༻ޮ཰Խ(ࣗಈԽ)ʹΑΔ ਓతίετ࡟ݮ ΠϯϑϥͷίετΛ҆͘Ͱ ͖ͨͱͯ͠΋ɺͦΕΛҡ࣋ ͢ΔͨΊʹଟ͘ͷखಈΦϖ Ϩʔγϣϯ͕ඞཁʹͳΔͱ ϏδωεʹूதͰ͖ͳ͍ɻ Մ༻ੑ޲্ʹΑΔ ػձଛࣦͷ௿ݮ (≒ ച্૿Ճ) Πϯϑϥͷ͚҆ͩ͞Λ௥ٻ ͯ͠ɺαʔϏε͕ఀࢭͨ͠ Γɺ඼࣭͕ྼԽͯ͠͠·͏ ͱɺϏδωεͷػձଛࣦ͕ ੜ·Εͯ͠·͏ɻ ࠷దͳόϥϯεΛऔΔ

Slide 6

Slide 6 text

CLOUD NATIVE DAYS TOKYO 2023 AYA IGARASHI @LADICLE FINOPS! KARPENTERʹΑΔ K8Sίετ࡟ݮ ࠷దԽͷಓ

Slide 7

Slide 7 text

AGENDA Optimize Cost KarpenterʹΑΔίετ࠷ దԽͷ͘͠Έ 04 WHAT YOU CAN LEARN TODAY! Optimize More! KarpenterͰΑΓίετΛ ࠷దԽ͢Δʹ͸ 05 Karpenter K8SΫϥελΦʔτεέʔ ϥͷKarpenterͱ͸ 03 Autoscalers ίετ࠷దԽʹ͓͚ΔΦʔ τεέʔϥͷར఺ 02 Cost Optimization ίετ࠷దԽͱ͸? 01

Slide 8

Slide 8 text

HOW TO OPTIMIZE K8S COST?

Slide 9

Slide 9 text

HOW TO OPTIMIZE K8S COST? Autoscaler

Slide 10

Slide 10 text

ݱࡏඞཁͱ͢ΔϦιʔεͩ ͚Λ֬อ͢ΔͷͰɺແବͳ ϦιʔεͷίετΛ࡟ݮͰ ͖Δɻ ෆཁϦιʔε࡟আ౳ͷ Πϯϑϥίετ࡟ݮ AUTOSCALER OPTIMIZE COST THE BENEFITS OF AUTOSCALER ӡ༻ޮ཰Խ(ࣗಈԽ)ʹΑΔ ਓతίετ࡟ݮ ඞཁͳϦιʔεྔ͕มԽͯ͠ ΋ࣗಈ௥ैͰ͖ΔͷͰɺӡ ༻ऀ͕εέʔϦϯάͷͨΊ ͷϦιʔε؂ࢹ΍࡞ۀΛ࡟ ݮͰ͖Δɻ Մ༻ੑ޲্ʹΑΔ ػձଛࣦͷ௿ݮ (≒ ച্૿Ճ) ਓͷखΛհͣ͞ʹεέʔϦ ϯάͰ͖ΔͷͰɺਓతϛε ΍஗ԆͷϦεΫΛܰݮ͠ɺ Մ༻ੑΛ޲্Ͱ͖Δɻ

Slide 11

Slide 11 text

ݱࡏඞཁͱ͢ΔϦιʔεͩ ͚Λ֬อ͢ΔͷͰɺແବͳ ϦιʔεͷίετΛ࡟ݮͰ ͖Δɻ ෆཁϦιʔε࡟আ౳ͷ Πϯϑϥίετ࡟ݮ AUTOSCALER OPTIMIZE COST THE BENEFITS OF AUTOSCALER ӡ༻ޮ཰Խ(ࣗಈԽ)ʹΑΔ ਓతίετ࡟ݮ ඞཁͳϦιʔεྔ͕มԽͯ͠ ΋ࣗಈ௥ैͰ͖ΔͷͰɺӡ ༻ऀ͕εέʔϦϯάͷͨΊ ͷϦιʔε؂ࢹ΍࡞ۀΛ࡟ ݮͰ͖Δɻ Մ༻ੑ޲্ʹΑΔ ػձଛࣦͷ௿ݮ (≒ ച্૿Ճ) ਓͷखΛհͣ͞ʹεέʔϦ ϯάͰ͖ΔͷͰɺਓతϛε ΍஗ԆͷϦεΫΛܰݮ͠ɺ Մ༻ੑΛ޲্Ͱ͖Δɻ ֤ίετΛ࡟ݮͰ͖Δ!!

Slide 12

Slide 12 text

AGENDA Optimize Cost KarpenterʹΑΔίετ࠷ దԽͷ͘͠Έ 04 WHAT YOU CAN LEARN TODAY! Karpenter K8SΫϥελΦʔτεέʔ ϥͷKarpenterͱ͸ 03 Autoscalers ίετ࠷దԽʹ͓͚ΔΦʔ τεέʔϥͷར఺ 02 Optimize More! KarpenterͰΑΓίετΛ ࠷దԽ͢Δʹ͸ 05 Cost Optimization ίετ࠷దԽͱ͸? 01

Slide 13

Slide 13 text

K8S AUTOSCALERS Quick Recap

Slide 14

Slide 14 text

THE TYPES OF AUTOSCALERS KUBERNETES AUTOSCALING Workload(/Pod) Autoscaling Cluster(/Node) Autoscaling Pod Node scale Pod Pod Node scale Pod Pod Node scale Pod New! Node

Slide 15

Slide 15 text

K8S CLUSTER AUTOSCALER

Slide 16

Slide 16 text

K8S CLUSTER AUTOSCALER Karpenter

Slide 17

Slide 17 text

AWS͕։ൃͨ͠k8sͷΫϥελΦʔτεέʔϥ https://karpenter.sh/ https://github.com/aws/karpenter AWSҎ֎ʹ΋AzureʹରԠ͍ͯ͠Δ https://github.com/Azure/karpenter ίΞػೳ͸k8sίϛϡχςΟͰ؅ཧ͞Ε͍ͯΔ https://github.com/kubernetes-sigs/karpenter ONE OF KUBERNETES CLUSTER AUTOSCALER WHAT IS KARPENTER? 2021/11/26: Ұൠఏڙ։࢝ 01 02 03 2023/11/06: AzureͷαϙʔτΛൃද 2023/11/23: sig-autoscalerʹدଃ

Slide 18

Slide 18 text

AWS͕։ൃͨ͠k8sͷΫϥελΦʔτεέʔϥ https://karpenter.sh/ https://github.com/aws/karpenter AWSҎ֎ʹ΋AzureʹରԠ͍ͯ͠Δ https://github.com/Azure/karpenter ίΞػೳ͸k8sίϛϡχςΟͰ؅ཧ͞Ε͍ͯΔ https://github.com/kubernetes-sigs/karpenter ONE OF KUBERNETES CLUSTER AUTOSCALER WHAT IS KARPENTER? aws/karpenter Azure/karpenter kuberentes-sigs/ karpenter v0.33.0 v0.2.0 v0.33.0

Slide 19

Slide 19 text

VS. CLUSTER AUTOSCALER (CAS)

Slide 20

Slide 20 text

LESS MANUAL OPERATION, FASTER SCALE (AWS) WHAT IS DIFFERENT FROM CAS? Kubernetes Cluster Autoscaler (CAS) Karpenter CAS Pod Node Pod Pod 1. Unschedulable Node 2. Create a new node from NG Node Group AWS ASG

Slide 21

Slide 21 text

LESS MANUAL OPERATION, FASTER SCALE (AWS) WHAT IS DIFFERENT FROM CAS? Kubernetes Cluster Autoscaler (CAS) Karpenter CAS Pod Node Pod Pod Node Node Group AWS ASG Large Node Group AWS ASG Small 1. Unschedulable 2. Create a new node from NG (small)

Slide 22

Slide 22 text

LESS MANUAL OPERATION, FASTER SCALE (AWS) WHAT IS DIFFERENT FROM CAS? Kubernetes Cluster Autoscaler (CAS) Karpenter CAS Pod Node Pod Pod Node Karpenter Pod Node Pod Node AWS Fleet Node Pool Node Group AWS ASG Pod 1. Unschedulable 2. Create a new Node

Slide 23

Slide 23 text

LESS MANUAL OPERATION, FASTER SCALE (AWS) WHAT IS DIFFERENT FROM CAS? Kubernetes Cluster Autoscaler (CAS) Karpenter CAS Pod Node Pod Pod Node Karpenter Pod Node Pod Pod Node 1. Unschedulable 2. Create a new (medium) Node AWS Fleet Node Pool Node Group AWS ASG

Slide 24

Slide 24 text

LESS MANUAL OPERATION, FASTER SCALE (AWS) WHAT IS DIFFERENT FROM CAS? Kubernetes Cluster Autoscaler (CAS) Karpenter ● Node͸CASͷNodeGroup(NG)ઃఆʹैͬ ͯ௥Ճ͞ΕΔ (AWSͰ͸EC2 ASGʹରԠ) ● ௥Ճ͢ΔNodeͷγϛϡϨʔτʹ͸NG͝ͱ ʹ1छྨͷNodeαΠζ͕࢖ΘΕΔ ● ৽͍͠ΠϯελϯελΠϓͷNodeΛCAS͔ Βੜ੒͢Δʹ͸NGͷ௥Ճ͕ඞཁͰɺ·ͨɺ NG͕ଟ͗͢Δͱεέʔϧʹ͕͔͔࣌ؒΔ ● Node͸NodePoolʹॻ͔Εͨ࡞੒͢Δϊʔ ͷ੍໿ࣄ߲ΛݩʹKarpenter͕બ୒͢Δ ● ௥Ճ͢ΔNodeͷγϛϡϨʔτ͸NodePool Λݩʹ༷ʑͳαΠζͷNode͕࢖ΘΕΔ ● AWSͷ৔߹ɺΠϯελϯεΛEC2 ASGΛܦ ༝ͤͣʹEC2 Fleet͔Β௚઀্ཱͪ͛ΔͷͰ CASʹൺ΂ΔͱΠϯελϯεͷىಈ͕ૣ͍

Slide 25

Slide 25 text

LESS MANUAL OPERATION, FASTER SCALE (AWS) WHAT IS DIFFERENT FROM CAS? Kubernetes Cluster Autoscaler (CAS) Karpenter ● Node͸CASͷNodeGroup(NG)ઃఆʹैͬ ͯ௥Ճ͞ΕΔ (AWSͰ͸EC2 ASGʹରԠ) ● ௥Ճ͢ΔNodeͷγϛϡϨʔτʹ͸NG͝ͱ ʹ1छྨͷNodeαΠζ͕࢖ΘΕΔ ● ৽͍͠ΠϯελϯελΠϓͷNodeΛCAS͔ Βੜ੒͢Δʹ͸NGͷ௥Ճ͕ඞཁͰɺ·ͨɺ NG͕ଟ͗͢Δͱεέʔϧʹ͕͔͔࣌ؒΔ ● Node͸NodePoolʹॻ͔Εͨ࡞੒͢Δϊʔ ͷ੍໿ࣄ߲ΛݩʹKarpenter͕બ୒͢Δ ● ௥Ճ͢ΔNodeͷγϛϡϨʔτ͸NodePool Λݩʹ༷ʑͳαΠζͷNode͕࢖ΘΕΔ ● AWSͷ৔߹ɺΠϯελϯεΛEC2 ASGΛܦ ༝ͤͣʹEC2 Fleet͔Β௚઀্ཱͪ͛ΔͷͰ CASʹൺ΂ΔͱΠϯελϯεͷىಈ͕ૣ͍ ख࡞ۀ͕ݮΓɺ ΑΓૣ͘εέʔϧͰ͖Δ!

Slide 26

Slide 26 text

AGENDA Optimize Cost KarpenterʹΑΔίετ࠷ దԽͷ͘͠Έ 04 WHAT YOU CAN LEARN TODAY! Karpenter K8SΫϥελΦʔτεέʔ ϥͷKarpenterͱ͸ 03 Autoscalers ίετ࠷దԽʹ͓͚ΔΦʔ τεέʔϥͷར఺ 02 Optimize More! KarpenterͰΑΓίετΛ ࠷దԽ͢Δʹ͸ 05 Cost Optimization ίετ࠷దԽͱ͸? 01

Slide 27

Slide 27 text

CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Provisioning Karpenter Node AWS Fleet Node Pool Pod Pod Pod Pod Pod Pod Pod Pod 1. Grouping pending Pods and Finding f itting candidates. 3. Create an optimal instance based on strategy ● Pending PodΛ·ͱΊͯϑΟοτ͢ΔNode ͷछྨΛ୳͢(BinPacking, FFD Algorithm) ● ϑΟοτ͢Δ΋ͷΑΓେ͖͍max 60ީิͷ ͏ͪɺઓུʹԠͨ͡࠷దͳΠϯελϯε͕ ىಈͰ͖Δ on-demand: lowest-price (࠷΋͍҆΋ͷ) spot: price-capacity-optimized (҆͘தஅՄೳੑͷ௿͍΋ͷ) 2. Send max 60 Candidates Save Costs!

Slide 28

Slide 28 text

CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Disruption Controllers ● Expiration: ಛఆ͕࣌ؒܦաͨ͠Β࡟আ ● Consolidation: Node্ͷશͯͷPod͕ଞͷNode ʹҠಈՄೳͳΒ࡟আɺ·ͨ͸ɺݱࡏͷΠϯελϯ εΑΓ͍҆Πϯελϯε͕ར༻ՄೳͳΒஔ׵ ● Drift: NodePoolͷઃఆ͕มߋ͞ΕɺطଘͷΠϯε λϯε͕๬·͍͠ঢ়ଶͱͷࠩ෼͕ͰͨΒ࡟আ͢Δ ● Interruption: SpotΠϯελϯεͷఀࢭ΍ UnhealthyʹͳͬͨΒஔ׵͢Δ Karpenter Pod Node Pod Node Pod Node Delete Unnecessary or Costly Nodes Save Costs!

Slide 29

Slide 29 text

Node A Pod Node A Pod Pod CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Disruption Controllers ● Expiration: ಛఆ͕࣌ؒܦաͨ͠Β࡟আ ● Consolidation: Node্ͷશͯͷPod͕ଞͷNode ʹҠಈՄೳͳΒ࡟আɺ·ͨ͸ɺݱࡏͷΠϯελϯ εΑΓ͍҆Πϯελϯε͕ར༻ՄೳͳΒஔ׵ ● Drift: NodePoolͷઃఆ͕มߋ͞ΕɺطଘͷΠϯε λϯε͕๬·͍͠ঢ়ଶͱͷࠩ෼͕ͰͨΒ࡟আ͢Δ ● Interruption: SpotΠϯελϯεͷఀࢭ΍ UnhealthyʹͳͬͨΒஔ׵͢Δ Pod Expire 2h Delete after 2 hours

Slide 30

Slide 30 text

CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Disruption Controllers Node A Pod Node B Pod Node A’ Pod Pod $0.05 $0.02 Recreate a new node Reallocate a Pod ● Expiration: ಛఆ͕࣌ؒܦաͨ͠Β࡟আ ● Consolidation: Node্ͷશͯͷPod͕ଞͷNode ʹҠಈՄೳͳΒ࡟আɺ·ͨ͸ɺݱࡏͷΠϯελϯ εΑΓ͍҆Πϯελϯε͕ར༻ՄೳͳΒஔ׵ ● Drift: NodePoolͷઃఆ͕มߋ͞ΕɺطଘͷΠϯε λϯε͕๬·͍͠ঢ়ଶͱͷࠩ෼͕ͰͨΒ࡟আ͢Δ ● Interruption: SpotΠϯελϯεͷఀࢭ΍ UnhealthyʹͳͬͨΒஔ׵͢Δ Pod

Slide 31

Slide 31 text

CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Disruption Controllers ● Expiration: ಛఆ͕࣌ؒܦաͨ͠Β࡟আ ● Consolidation: Node্ͷશͯͷPod͕ଞͷNode ʹҠಈՄೳͳΒ࡟আɺ·ͨ͸ɺݱࡏͷΠϯελϯ εΑΓ͍҆Πϯελϯε͕ར༻ՄೳͳΒஔ׵ ● Drift: NodePoolͷઃఆ͕มߋ͞ΕɺطଘͷΠϯε λϯε͕๬·͍͠ঢ়ଶͱͷࠩ෼͕ͰͨΒ࡟আ͢Δ ● Interruption: SpotΠϯελϯεͷఀࢭ΍ UnhealthyʹͳͬͨΒஔ׵͢Δ Node A Pod Node A’ Pod Recreate Im age v1 Im age v2 Desired state of machine image was changed from v1 to v2. Node Pool v2

Slide 32

Slide 32 text

Node A CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Disruption Controllers ● Expiration: ಛఆ͕࣌ؒܦաͨ͠Β࡟আ ● Consolidation: Node্ͷશͯͷPod͕ଞͷNode ʹҠಈՄೳͳΒ࡟আɺ·ͨ͸ɺݱࡏͷΠϯελϯ εΑΓ͍҆Πϯελϯε͕ར༻ՄೳͳΒஔ׵ ● Drift: NodePoolͷઃఆ͕มߋ͞ΕɺطଘͷΠϯε λϯε͕๬·͍͠ঢ়ଶͱͷࠩ෼͕ͰͨΒ࡟আ͢Δ ● Interruption: SpotΠϯελϯεͷఀࢭ΍ UnhealthyʹͳͬͨΒஔ׵͢Δ Spot Spot interruptions have a 2-minute notice Node A’ Pod Pod Recreate

Slide 33

Slide 33 text

CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Provisioning Disruption Controllers ● Pending PodΛ·ͱΊͯϑΟοτ͢ΔNode ͷछྨΛ୳͢(BinPacking, FFD Algorithm) ● ϑΟοτ͢Δ΋ͷΑΓେ͖͍max 60ީิͷ ͏ͪɺઓུʹԠͨ͡࠷దͳΠϯελϯε͕ ىಈͰ͖Δ on-demand: lowest-price (࠷΋͍҆΋ͷ) spot: price-capacity-optimized (҆͘தஅՄೳੑͷ௿͍΋ͷ) ● Expiration: ಛఆ͕࣌ؒܦաͨ͠Β࡟আ ● Consolidation: Node্ͷશͯͷPod͕ଞͷNode ʹҠಈՄೳͳΒ࡟আɺ·ͨ͸ɺݱࡏͷΠϯελϯ εΑΓ͍҆Πϯελϯε͕ར༻ՄೳͳΒஔ׵ ● Drift: NodePoolͷઃఆ͕มߋ͞ΕɺطଘͷΠϯε λϯε͕๬·͍͠ঢ়ଶͱͷࠩ෼͕ͰͨΒ࡟আ͢Δ ● Interruption: spotͷΠϯελϯεͷఀࢭ΍ UnhealthyʹͳͬͨΒஔ׵͢Δ CASΑΓΞάϨογϒ ͳͷͰ஫ҙ!

Slide 34

Slide 34 text

CREATE THE RIGHT SIZE INSTANCE AND DELETE THE UNNECESSARY INSTANCE KARPENTER OPTIMIZES COSTS! Provisioning Disruption Controllers ● Pending PodΛ·ͱΊͯϑΟοτ͢ΔNode ͷछྨΛ୳͢(BinPacking, FFD Algorithm) ● ϑΟοτ͢Δ΋ͷΑΓେ͖͍max 60ީิͷ ͏ͪઓུʹԠͨ͡࠷దͳΠϯελϯε͕ى ಈ͞ΕΔ on-demand: lowest-price (࠷΋͍҆΋ͷ) spot: price-capacity-optimized (҆͘தஅՄೳੑͷ௿͍΋ͷ) ● Expiration: ಛఆ͕࣌ؒܦաͨ͠Β࡟আ ● Consolidation: Node্ͷશͯͷPod͕ଞͷNode ʹҠಈՄೳͳΒ࡟আɺ·ͨ͸ɺݱࡏͷΠϯελϯ εΑΓ͍҆Πϯελϯε͕ར༻ՄೳͳΒஔ׵ ● Drift: NodePoolͷઃఆ͕มߋ͞ΕɺطଘͷΠϯε λϯε͕๬·͍͠ঢ়ଶͱͷࠩ෼͕ͰͨΒ࡟আ͢Δ ● Interruption: spotͷΠϯελϯεͷఀࢭ΍ UnhealthyʹͳͬͨΒஔ׵͢Δ CASΑΓΞάϨογϒ ͳͷͰ஫ҙ! ίετΛ࠷దԽ! ඞཁͳϦιʔε͚ͩ࡞੒ ෆཁͳϦιʔε͸࡟আ ✕ ࣗಈԽ

Slide 35

Slide 35 text

AGENDA Optimize Cost KarpenterʹΑΔίετ࠷ దԽͷ͘͠Έ 04 WHAT YOU CAN LEARN TODAY! Karpenter K8SΫϥελΦʔτεέʔ ϥͷKarpenterͱ͸ 03 Autoscalers ίετ࠷దԽʹ͓͚ΔΦʔ τεέʔϥͷར఺ 02 Optimize More! KarpenterͰΑΓίετΛ ࠷దԽ͢Δʹ͸ 05 Cost Optimization ίετ࠷దԽͱ͸? 01

Slide 36

Slide 36 text

EC2 INSTANCE PURCHASE TYPES Quick Recap

Slide 37

Slide 37 text

CHARACTERISTICS OF PURCHASE TYPES AND COST EC2 INSTANCE PURCHASE TYPES On-Demand On-Demand Instance EC2ΠϯελϯεͷఆՁɻ Spot Instance धཁͱڙڅʹԠͯ͡Ձ͕֨ௐ੔͞ΕΔɻΠϯελϯ εͷ࡟আ͕͋Δ͕ɺେ෯ʹׂҾ͔ΕΔ͜ͱ͕ଟ͍ɻ SavingsPlans / Reserved Instance 1-3೥ͷOn-Demandͷ௕ظίϛοτΛࣄલܖ໿͢Δ ͜ͱͰɺେ෯ͳׂҾΛड͚Δϓϥϯɻ࡟আ͸ͳ͍ɻ

Slide 38

Slide 38 text

CHARACTERISTICS OF PURCHASE TYPES AND COST EC2 INSTANCE PURCHASE TYPES On-Demand Instance EC2ΠϯελϯεͷఆՁɻ Spot Instance धཁͱڙڅʹԠͯ͡Ձ͕֨ௐ੔͞ΕΔɻΠϯελϯ εͷ࡟আ͕͋Δ͕ɺେ෯ʹׂҾ͔ΕΔ͜ͱ͕ଟ͍ɻ SavingsPlans / Reserved Instance 1-3೥ͷOn-Demandͷ௕ظίϛοτΛࣄલܖ໿͢Δ ͜ͱͰɺେ෯ͳׂҾΛड͚Δϓϥϯɻ࡟আ͸ͳ͍ɻ m5.large t2.medium c4.xlarge spot spot pool spot pool

Slide 39

Slide 39 text

CHARACTERISTICS OF PURCHASE TYPES AND COST EC2 INSTANCE PURCHASE TYPES On-Demand Instance EC2ΠϯελϯεͷఆՁɻ Spot Instance धཁͱڙڅʹԠͯ͡Ձ͕֨ௐ੔͞ΕΔɻΠϯελϯ εͷ࡟আ͕͋Δ͕ɺେ෯ʹׂҾ͔ΕΔ͜ͱ͕ଟ͍ɻ SavingsPlans / Reserved Instance 1-3೥ͷOn-Demandͷ௕ظίϛοτΛࣄલܖ໿͢Δ ͜ͱͰɺେ෯ͳׂҾΛड͚Δϓϥϯɻ࡟আ͸ͳ͍ɻ 1-3 years max 72% off

Slide 40

Slide 40 text

ARE WE OPTIMIZING COST ENOUGH?

Slide 41

Slide 41 text

ARE WE OPTIMIZING COST ENOUGH? Discount Plan NOT Supported https://github.com/aws/karpenter/issues/5163

Slide 42

Slide 42 text

KARPENTER USES PUBLIC ON-DEMAND AND SPOT INSTANCE RATE DISCOUNT PLAN NOT SUPPORTED KarpenterͱߪೖΦϓγϣϯ • αϙʔτ͍ͯ͠ΔߪೖΦϓγϣϯ͸ ެ։ϨʔτͷOn-DemandͱSpotͷ ΈͰɺׂҾϓϥϯʹ͍ͭͯ͸ߟྀ͞ Εͳ͍ • Reserved Instance΍Savings Plan ͸ɺSpotͷΑ͏ʹΠϯελϯε͕ಥ વ࡟আ͞ΕΔ͜ͱ΋ͳ͘ɺίετ࡟ ݮʹΑ͘࢖ΘΕ͍ͯΔΦϓγϣϯ Flexera 2023 State of the Cloud Report

Slide 43

Slide 43 text

IN CASE YOU HAVE A SAVINGS PLAN FOR $0.047/HR EXAMPLE: COST IS NOT OPTIMIZED ҎԼͷSavings PlansΛܖ໿ͨ͠৔߹… 3 years EC2 Savings Plan Compute Instance Max Savings 66% 72% t3.large Sample (ఆՁ: $0.1088) $0.062 (43%) $0.047 (57%) Locked Single Instance Family & Region No Yes t3.large, Tokyo Region, 3 years, No Upfront, Linux ※ 2023/11/15 21:00 ࣌఺ Savings Plans for K8S Nodes $0.047 t3.large t3.large 1 hour t3.large t3.large • Instance Saving PlanͷTokyo Region, t3.largeΛ3೥ؒ • 1࣌ؒ͋ͨΓ$0.047Λܖ໿ 57% off

Slide 44

Slide 44 text

IN CASE YOU HAVE A SAVINGS PLAN FOR $0.047/HR EXAMPLE: COST IS NOT OPTIMIZED c5.largeͷOn-Demand͕࡞੒͞Εͨ৔߹ Instance Type Purchase Type Price (Discount) c5.large On-demand $0.096 t3.large On-demand $0.1088 SavingsPlan $0.047 (57%) t3.large, Tokyo Region, 3 years, No Upfront, Linux ※ 2023/11/15 21:00 ࣌఺ EC2 Instance Pricing List • c5.largeͷOn-demand͸t3.largeΑΓ͍҆ • c5.large͕࡞੒͞ΕΔͱ௥ՃͰ$0.096ͷ௥Ճίετ c5.large t3.large +$0.096 $0.047 Karpenter 1 hour < Compare with c5.large and t3.large on-demand rate.

Slide 45

Slide 45 text

+$0.033 t3.large IN CASE YOU HAVE A SAVINGS PLAN FOR $0.047/HR EXAMPLE: COST IS NOT OPTIMIZED t3.largeͷSpot͕࡞੒͞Εͨ৔߹ Instance Type Purchase Type Price (Discount) t3.large On-demand $0.1088 Spot $0.033 (73%) SavingsPlan $0.047 (57%) t3.large, Tokyo Region, 3 years, No Upfront, Linux ※ 2023/11/15 21:00 ࣌఺ EC2 Instance Pricing List • t3.largeͷSpot͸t3.largeͷOn-demandΑΓ͍҆ • SpotͰ࡞੒͞ΕΔͱ௥ՃͰ$0.033ͷ௥Ճίετ t3.large $0.047 Karpenter 1 hour < Compare with t3.large spot and on-demand rate. spot

Slide 46

Slide 46 text

EXAMPLE: COST IS NOT OPTIMIZED IN CASE YOU HAVE A SAVINGS PLAN FOR $0.047/HR Unoptimized Optimized! 👍 Unused Savings Plans

Slide 47

Slide 47 text

Optimized! 👍 EXAMPLE: COST IS NOT OPTIMIZED IN CASE YOU HAVE A SAVINGS PLAN FOR $0.047/HR Unoptimized Unused Savings Plans ίετ࠷దԽʹ͸SavingsPlanͷ࢖༻཰্͕ ͕ΔΑ͏ͳߟྀ΋ඞཁ!

Slide 48

Slide 48 text

HOW DO WE IMPROVE SAVINGS PLAN UTILIZATION?

Slide 49

Slide 49 text

● Savings PlanΛߪೖͨ͠ΞΧ΢ϯτ(΋͘͠ ͸ڞ༗͍ͯ͠Δ૊৫)಺ͷଞͷk8sΫϥελ ΍ɺk8sҎ֎Ͱ࢖ΘΕ͍ͯΔΠϯελϯεͷ ߟྀ͕ඞཁ ● Savings Plan͸όϥόϥͳ࣌ظʹෳ਺ߪೖ ͢Δ͜ͱ΋ଟ͍ͷͰɺͦΕͧΕͷϓϥϯͷ ঢ়گΛखಈͰ؅ཧ͢Δͷ΋େม ● GetSavingsPlansUtilization API͸1೔୯Ґͳ ͷͰཻ౓͕͋Β͗͢Δ ● ίετͱ࢖༻ঢ়گϨϙʔτ(AWS CUR) ͔Β1 ࣌ؒ୯Ґͷར༻཰ΛऔಘͰ͖Δ͕ɺجຊత ʹલ೔ͷσʔλʹͳΔ HOW CAN WE CALCULATE SAVINGS PLAN UTILIZATION? CHALLENGING PARTS Savings Planͷར༻཰ΛϦΞϧλΠϜʹऔ ಘ͢ΔAPI͕ଘࡏ͠ͳ͍ K8sΫϥελ಺ͷΠϯελϯε৘ใ͚ͩͰ ͸ར༻཰͕ܭࢉͰ͖ͳ͍

Slide 50

Slide 50 text

● Savings PlanΛߪೖͨ͠ΞΧ΢ϯτ(΋͘͠ ͸ڞ༗͍ͯ͠Δ૊৫)಺ͷଞͷk8sΫϥελ ΍ɺk8sҎ֎Ͱ࢖ΘΕ͍ͯΔΠϯελϯεͷ ߟྀ͕ඞཁ ● Savings Plan͸όϥόϥͳ࣌ظʹෳ਺ߪೖ ͢Δ͜ͱ΋ଟ͍ͷͰɺͦΕͧΕͷϓϥϯͷ ঢ়گΛखಈͰ؅ཧ͢Δͷ΋େม ● GetSavingsPlansUtilization API͸1೔୯Ґͳ ͷͰཻ౓͕͋Β͗͢Δ ● ίετͱ࢖༻ঢ়گϨϙʔτ(AWS CUR) ͔Β1 ࣌ؒ୯Ґͷར༻཰ΛऔಘͰ͖Δ͕ɺجຊత ʹલ೔ͷσʔλʹͳΔ HOW CAN WE CALCULATE SAVINGS PLAN UTILIZATION? CHALLENGING PARTS Savings Planͷར༻཰ΛϦΞϧλΠϜʹऔ ಘ͢ΔAPI͕ଘࡏ͠ͳ͍ K8sΫϥελ಺ͷΠϯελϯε৘ใ͚ͩͰ ͸ར༻཰͕ܭࢉͰ͖ͳ͍ CUR͔ΒSavings Plan৘ใΛूܭ ✕ ݱࡏͷશΠϯελϯεঢ়گΛऩू → Savings Planͷར༻཰ΛγϛϡϨʔτ

Slide 51

Slide 51 text

PREDICT PLANS UTILIZATION FEEDBACK ON PREDICATED RESULTS TO KARPENTER S3 Agent Karpenter Node Pool Cost Usage Report Kubernetes Cluster 1. Process CUR & Predicate SavingsPlan Utilization Server Node Pool Node Pool 2. Send Instance Information & Get Predicate Result 3. Update NodePool according to predication Cost Usage Report Upload Create Optimal Node!

Slide 52

Slide 52 text

Demo

Slide 53

Slide 53 text

Optimize Cost KarpenterʹΑΔίετ࠷ దԽͷ͘͠Έ 04 Cost Optimization ίετ࠷దԽͱ͸? 01 Autoscalers ίετ࠷దԽʹ͓͚ΔΦʔ τεέʔϥͷར఺ 02 Optimize More! KarpenterͰΑΓίετΛ ࠷దԽ͢Δʹ͸ 05 🏆 AGENDA WHAT YOU CAN LEARN TODAY! Karpenter K8SΫϥελΦʔτεέʔ ϥͷKarpenterͱ͸ 03

Slide 54

Slide 54 text

WHAT YOU LEARNED TODAY! 1. FinOpsͰ͸ɺ୯ʹ҆͞ΛٻΊΔ͚ͩͰ͸ͳ͘ɺӡ༻ޮ཰Խ΍Մ༻ ੑͷόϥϯεΛऔͬͨίετ࠷దԽΛ໨ࢦ͢ 2. Φʔτεέʔϥ͸ɺk8sͷίετ࠷దԽͷ༗༻ͳखஈͰ͋Γɺ Karpenter͸ͦͷதͷબ୒ࢶͷҰͭ 3. Savings PlanʹରԠͨ͠Πϯελϯε͕࡞੒͞Εͳ͍ͳͲɺ୯ʹ πʔϧΛಋೖ͚ͨͩͩ͠ͱɺίετ࠷దԽͰ͖ͳ͍έʔε͕͋Δ RECAP

Slide 55

Slide 55 text

THANKS! AYA IGARASHI, @LADICLE CLOUDNATIX INC.