[{"data":1,"prerenderedAt":1684},["ShallowReactive",2],{"docs-page-en-\u002Fdocs\u002Fservices\u002Feks":3,"docs-navigation-en":1594,"docs-surround-en-\u002Fdocs\u002Fservices\u002Feks":1679},{"id":4,"title":5,"body":6,"claimDependencies":1576,"description":1580,"extension":1581,"locale":1582,"meta":1583,"missingMedia":1584,"navigation":546,"owner":1585,"path":1586,"reviewStatus":1587,"seo":1588,"staleLinks":1589,"stem":1590,"technicalRisk":1591,"translationKey":1592,"__hash__":1593},"docs_en\u002Fdocs\u002F5.services\u002F3.eks.md","EKS Optimization",{"type":7,"value":8,"toc":1538},"minimark",[9,13,18,21,50,54,59,62,67,87,92,118,122,125,129,133,153,157,177,181,201,205,219,223,227,230,236,253,261,267,287,292,320,325,341,345,348,353,364,369,383,388,402,407,421,425,428,433,438,448,452,456,462,466,470,476,480,484,490,494,497,503,507,510,515,747,752,915,919,923,928,943,948,966,970,973,994,998,1003,1020,1025,1039,1043,1057,1061,1065,1070,1081,1086,1097,1101,1105,1116,1120,1131,1135,1139,1150,1154,1165,1169,1173,1184,1189,1200,1204,1208,1213,1219,1224,1227,1232,1235,1240,1243,1247,1252,1255,1263,1268,1286,1291,1293,1304,1308,1322,1326,1331,1351,1356,1370,1374,1377,1449,1458,1462,1465,1497,1502,1534],[10,11,12],"p",{},"Jetscale provides AI-powered cost optimization for Amazon EKS (Elastic Kubernetes Service) clusters. Our specialized agents analyze node group utilization, instance types, capacity configurations, and pricing to identify right-sizing, Graviton migration, and Spot optimization opportunities.",[14,15,17],"h2",{"id":16},"overview","Overview",[10,19,20],{},"Jetscale optimizes EKS clusters by analyzing:",[22,23,24,32,38,44],"ul",{},[25,26,27,31],"li",{},[28,29,30],"strong",{},"Node group utilization",": CPU, memory, network, and disk usage across all nodes",[25,33,34,37],{},[28,35,36],{},"Instance type efficiency",": Whether current instance types match actual workload requirements",[25,39,40,43],{},[28,41,42],{},"Capacity type",": ON_DEMAND vs. SPOT opportunities for fault-tolerant workloads",[25,45,46,49],{},[28,47,48],{},"Cost analysis",": Control plane costs, node group costs, and optimization potential",[14,51,53],{"id":52},"supported-eks-types","Supported EKS Types",[55,56,58],"h3",{"id":57},"eks-clusters","EKS Clusters",[10,60,61],{},"Jetscale processes each node group within a cluster independently, generating per-node-group recommendations with an aggregated cluster-level view.",[10,63,64],{},[28,65,66],{},"Compute models supported:",[22,68,69,75,81],{},[25,70,71,74],{},[28,72,73],{},"Managed Node Groups",": AWS-managed, explicit instance type configuration",[25,76,77,80],{},[28,78,79],{},"Karpenter",": Dynamic instance selection with graceful Spot interruption handling",[25,82,83,86],{},[28,84,85],{},"Self-Managed Nodes",": EC2 instances launched outside EKS managed node groups",[10,88,89],{},[28,90,91],{},"What We Optimize:",[22,93,94,100,106,112],{},[25,95,96,99],{},[28,97,98],{},"Node type right-sizing",": Match instance types to actual workload needs",[25,101,102,105],{},[28,103,104],{},"Graviton migration",": Switch to ARM-based instances for 10-40% savings",[25,107,108,111],{},[28,109,110],{},"Spot optimization",": Move fault-tolerant workloads to Spot capacity for 60-90% savings",[25,113,114,117],{},[28,115,116],{},"Delete unused",": Remove idle clusters or node groups for 100% savings",[55,119,121],{"id":120},"eks-node-groups","EKS Node Groups",[10,123,124],{},"Jetscale also optimizes standalone node groups with the same analysis and recommendation types as cluster-level processing.",[14,126,128],{"id":127},"instance-families","Instance Families",[55,130,132],{"id":131},"general-purpose-m-series","General Purpose (M-series)",[22,134,135,141,147],{},[25,136,137,140],{},[28,138,139],{},"M7g"," (Graviton3, latest): Best price-performance for general workloads",[25,142,143,146],{},[28,144,145],{},"M6g"," (Graviton2): Proven ARM-based option",[25,148,149,152],{},[28,150,151],{},"M5\u002FM5a"," (Intel\u002FAMD): x86 compatibility",[55,154,156],{"id":155},"compute-optimized-c-series","Compute Optimized (C-series)",[22,158,159,165,171],{},[25,160,161,164],{},[28,162,163],{},"C7g"," (Graviton3): CPU-intensive containerized workloads",[25,166,167,170],{},[28,168,169],{},"C6g"," (Graviton2): Batch processing, CI\u002FCD",[25,172,173,176],{},[28,174,175],{},"C5\u002FC5a"," (Intel\u002FAMD): x86 compute workloads",[55,178,180],{"id":179},"memory-optimized-r-series","Memory Optimized (R-series)",[22,182,183,189,195],{},[25,184,185,188],{},[28,186,187],{},"R7g"," (Graviton3): In-memory caching, real-time analytics",[25,190,191,194],{},[28,192,193],{},"R6g"," (Graviton2): Memory-heavy containers",[25,196,197,200],{},[28,198,199],{},"R5\u002FR5a"," (Intel\u002FAMD): x86 memory workloads",[55,202,204],{"id":203},"burstable-t-series","Burstable (T-series)",[22,206,207,213],{},[25,208,209,212],{},[28,210,211],{},"T4g"," (Graviton2): Dev\u002Ftest node groups, low-traffic services",[25,214,215,218],{},[28,216,217],{},"T3\u002FT3a"," (Intel\u002FAMD): Variable workloads with CPU credit model",[14,220,222],{"id":221},"how-jetscale-optimizes-eks","How Jetscale Optimizes EKS",[55,224,226],{"id":225},"_1-data-collection","1. Data Collection",[10,228,229],{},"Jetscale analyzes multiple data sources:",[10,231,232,235],{},[28,233,234],{},"CloudWatch Metrics"," (1-year lookback):",[22,237,238,241,244,247,250],{},[25,239,240],{},"CPU utilization (average, maximum, percentiles) per node",[25,242,243],{},"Memory utilization (average, maximum, percentiles) per node",[25,245,246],{},"Network I\u002FO (bytes in\u002Fout)",[25,248,249],{},"Disk I\u002FO (operations per second)",[25,251,252],{},"Instance health status checks",[10,254,255,256,260],{},"Metrics are aggregated across all EC2 instances in a node group, with instance counts noted (e.g., \"",[257,258,259],"span",{},"3 instances"," avg 25%, max 45%\").",[10,262,263,266],{},[28,264,265],{},"EKS API Data",":",[22,268,269,272,275,278,281,284],{},[25,270,271],{},"Cluster Kubernetes version and support type",[25,273,274],{},"Node group instance types and scaling configuration (min, max, desired)",[25,276,277],{},"Capacity type (ON_DEMAND or SPOT)",[25,279,280],{},"AMI type (AL2_x86_64, AL2_ARM_64, etc.)",[25,282,283],{},"Labels, taints, and launch template configuration",[25,285,286],{},"Auto Scaling Group linkage",[10,288,289,266],{},[28,290,291],{},"AWS Pricing Data",[22,293,294,297,300],{},[25,295,296],{},"On-Demand hourly rates per instance type",[25,298,299],{},"Spot hourly rates (minimum and average)",[25,301,302,303],{},"EKS control plane cost:\n",[22,304,305,313],{},[25,306,307,308,312],{},"Standard support: ",[309,310,311],"del",{},"$0.10\u002Fhour (","$73\u002Fmonth)",[25,314,315,316,319],{},"Extended support (Kubernetes 1.26 and earlier): ",[309,317,318],{},"$0.60\u002Fhour (","$438\u002Fmonth)",[10,321,322],{},[28,323,324],{},"Instance linking:",[22,326,327,330,338],{},[25,328,329],{},"Managed Node Groups → EC2 instances via Auto Scaling Group name",[25,331,332,333,337],{},"Karpenter nodes → Cluster via ",[334,335,336],"code",{},"aws:eks:cluster-name"," tag, grouped by NodePool",[25,339,340],{},"Self-managed nodes → Cluster via cluster name tag, grouped by instance type",[55,342,344],{"id":343},"_2-analysis","2. Analysis",[10,346,347],{},"Our AI agents perform deep analysis per node group:",[10,349,350],{},[28,351,352],{},"Utilization Patterns:",[22,354,355,358,361],{},[25,356,357],{},"Peak vs. average CPU and memory usage across all nodes",[25,359,360],{},"Time-of-day and day-of-week patterns",[25,362,363],{},"Node count vs. actual resource consumption",[10,365,366],{},[28,367,368],{},"Cost Modeling:",[22,370,371,377,380],{},[25,372,373,374],{},"Current cost: ",[334,375,376],{},"instance_hourly_rate x desired_size x 730 hours\u002Fmonth",[25,378,379],{},"Control plane cost included in cluster-level totals",[25,381,382],{},"Spot pricing uses conservative minimum rates (not averages)",[10,384,385],{},[28,386,387],{},"Workload Classification:",[22,389,390,393,396,399],{},[25,391,392],{},"Compute-heavy: High CPU, low memory utilization",[25,394,395],{},"Memory-heavy: Low CPU, high memory utilization",[25,397,398],{},"Balanced: Proportional CPU and memory usage",[25,400,401],{},"Idle: Minimal utilization across all metrics",[10,403,404],{},[28,405,406],{},"Safety Checks:",[22,408,409,412,415,418],{},[25,410,411],{},"Auto Mode clusters are skipped (AWS manages compute automatically)",[25,413,414],{},"Memory reduction >25% requires memory utilization metrics",[25,416,417],{},"CPU reduction >50% requires CPU utilization metrics",[25,419,420],{},"Capacity reductions without metrics are rejected",[55,422,424],{"id":423},"_3-recommendations","3. Recommendations",[10,426,427],{},"Jetscale generates recommendations per node group, then aggregates at the cluster level.",[429,430,432],"h4",{"id":431},"right-sizing","Right-Sizing",[10,434,435],{},[28,436,437],{},"Example Recommendation:",[439,440,445],"pre",{"className":441,"code":443,"language":444},[442],"language-text","Resource: production-cluster \u002F api-node-group\nCurrent: 3x m5.xlarge (ON_DEMAND)\n  - 4 vCPU, 16 GiB memory per node\n  - Monthly cost: $420.48\n\nCloudWatch Analysis (3 nodes):\n  - CPU: avg 22%, max 41%\n  - Memory: avg 35%, max 52%\n\nRecommended: 3x m5.large (ON_DEMAND)\n  - 2 vCPU, 8 GiB memory per node\n  - Monthly cost: $210.24\n\nCost Impact:\n  - Savings: $210.24\u002Fmonth (50%), $2,522.88\u002Fyear\n\nRisk: Low - Peak CPU at 41% fits within 2 vCPU\n  Memory at 52% of 16 GiB = 8.3 GiB, fits within 8 GiB with headroom\nImplementation Effort: Medium - Rolling node group update required\nRestart Needed: Yes (node replacement)\n","text",[334,446,443],{"__ignoreMap":447},"",[429,449,451],{"id":450},"graviton-migration","Graviton Migration",[10,453,454],{},[28,455,437],{},[439,457,460],{"className":458,"code":459,"language":444},[442],"Resource: web-cluster \u002F frontend-nodes\nCurrent: 4x m5.large (ON_DEMAND)\n  - 2 vCPU, 8 GiB memory per node\n  - Monthly cost: $280.32\n\nRecommended: 4x m6g.large (ON_DEMAND)\n  - 2 vCPU, 8 GiB memory per node (Graviton2, ARM64)\n  - Monthly cost: $224.26\n\nCost Impact:\n  - Savings: $56.06\u002Fmonth (20%), $672.72\u002Fyear\n\nRisk: Low - Containerized workloads are typically ARM-compatible\n  Same vCPU and memory specifications\n  Better price-performance on Graviton\nImplementation Effort: Medium - Requires ARM64-compatible container images\nRestart Needed: Yes (node replacement with new AMI)\n",[334,461,459],{"__ignoreMap":447},[429,463,465],{"id":464},"spot-optimization","Spot Optimization",[10,467,468],{},[28,469,437],{},[439,471,474],{"className":472,"code":473,"language":444},[442],"Resource: batch-cluster \u002F worker-nodes\nCurrent: 5x c5.xlarge (ON_DEMAND)\n  - 4 vCPU, 8 GiB memory per node\n  - Monthly cost: $620.50\n\nWorkload Analysis:\n  - Batch processing, stateless\n  - Fault-tolerant (jobs restart on failure)\n  - No production-facing traffic\n\nRecommended: 5x c5.xlarge (SPOT)\n  - Same specs, Spot capacity\n  - Monthly cost: $186.15 (conservative Spot minimum)\n\nCost Impact:\n  - Savings: $434.35\u002Fmonth (70%), $5,212.20\u002Fyear\n\nRisk: Medium - Spot instances can be reclaimed with 2-minute notice\n  Karpenter handles interruptions natively\n  Batch jobs should be idempotent and restartable\nImplementation Effort: Low (Karpenter) \u002F Medium (Managed Node Groups)\nRestart Needed: Yes (node replacement)\n",[334,475,473],{"__ignoreMap":447},[429,477,479],{"id":478},"delete-unused","Delete Unused",[10,481,482],{},[28,483,437],{},[439,485,488],{"className":486,"code":487,"language":444},[442],"Resource: legacy-cluster \u002F test-nodes\nCurrent: 2x t3.medium (ON_DEMAND)\n  - Monthly cost: $60.74\n\nCloudWatch Analysis (2 nodes):\n  - CPU: avg 0.5%, max 2%\n  - Memory: avg 8%, max 12%\n  - No network activity in 30+ days\n\nRecommended: Delete\n  - Savings: $60.74\u002Fmonth (100%), $728.88\u002Fyear\n\nRisk: Low - No meaningful workload detected\n  Name does not contain \"prod\" or \"production\"\n  Verify with team before deletion\n",[334,489,487],{"__ignoreMap":447},[429,491,493],{"id":492},"cluster-level-aggregation","Cluster-Level Aggregation",[10,495,496],{},"When multiple node groups are optimized:",[439,498,501],{"className":499,"code":500,"language":444},[442],"Cluster: production-cluster\nControl Plane: $73\u002Fmonth (Standard support)\n\nNode Group Results:\n1. api-nodes: Rightsize m5.xlarge → m5.large (-$210.24\u002Fmonth)\n2. worker-nodes: MigrateToGraviton m5.large → m6g.large (-$56.06\u002Fmonth)\n3. cache-nodes: NoRecommendation (already optimized)\n\nCluster Action: MultipleOptimizations\nTotal Cluster Savings: $266.30\u002Fmonth, $3,195.60\u002Fyear\n",[334,502,500],{"__ignoreMap":447},[55,504,506],{"id":505},"_4-terraform-generation","4. Terraform Generation",[10,508,509],{},"For each recommendation, Jetscale generates production-ready Terraform code:",[10,511,512],{},[28,513,514],{},"Example: Node Group Right-Sizing",[439,516,520],{"className":517,"code":518,"language":519,"meta":447,"style":447},"language-hcl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# EKS Node Group Optimization: Right-Sizing\n# Generated by Jetscale on 2024-01-15\n# Recommendation ID: rec_eks_001\n\nresource \"aws_eks_node_group\" \"api_nodes\" {\n  cluster_name    = \"production-cluster\"\n  node_group_name = \"api-nodes\"\n  node_role_arn   = var.node_role_arn\n  subnet_ids      = var.subnet_ids\n\n  # Previous: m5.xlarge ($420.48\u002Fmonth)\n  # Optimized: m5.large ($210.24\u002Fmonth)\n  # Cost Reduction: 50% ($210.24\u002Fmonth, $2,522.88\u002Fyear)\n  #\n  # Usage analysis:\n  # - CPU: avg 22%, max 41% (fits within 2 vCPU)\n  # - Memory: avg 35%, max 52% of 16 GiB = 8.3 GiB (fits within 8 GiB)\n  instance_types = [\"m5.large\"]\n\n  scaling_config {\n    desired_size = 3\n    max_size     = 5\n    min_size     = 2\n  }\n\n  update_config {\n    max_unavailable = 1\n  }\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"        = \"true\"\n      \"jetscale:recommendation\"   = \"rec_eks_001\"\n      \"jetscale:previous_type\"    = \"m5.xlarge\"\n    }\n  )\n}\n","hcl",[334,521,522,529,535,541,548,554,560,566,572,578,583,589,595,601,607,613,619,625,631,636,642,648,654,660,666,671,677,683,688,693,699,705,711,717,723,729,735,741],{"__ignoreMap":447},[257,523,526],{"class":524,"line":525},"line",1,[257,527,528],{},"# EKS Node Group Optimization: Right-Sizing\n",[257,530,532],{"class":524,"line":531},2,[257,533,534],{},"# Generated by Jetscale on 2024-01-15\n",[257,536,538],{"class":524,"line":537},3,[257,539,540],{},"# Recommendation ID: rec_eks_001\n",[257,542,544],{"class":524,"line":543},4,[257,545,547],{"emptyLinePlaceholder":546},true,"\n",[257,549,551],{"class":524,"line":550},5,[257,552,553],{},"resource \"aws_eks_node_group\" \"api_nodes\" {\n",[257,555,557],{"class":524,"line":556},6,[257,558,559],{},"  cluster_name    = \"production-cluster\"\n",[257,561,563],{"class":524,"line":562},7,[257,564,565],{},"  node_group_name = \"api-nodes\"\n",[257,567,569],{"class":524,"line":568},8,[257,570,571],{},"  node_role_arn   = var.node_role_arn\n",[257,573,575],{"class":524,"line":574},9,[257,576,577],{},"  subnet_ids      = var.subnet_ids\n",[257,579,581],{"class":524,"line":580},10,[257,582,547],{"emptyLinePlaceholder":546},[257,584,586],{"class":524,"line":585},11,[257,587,588],{},"  # Previous: m5.xlarge ($420.48\u002Fmonth)\n",[257,590,592],{"class":524,"line":591},12,[257,593,594],{},"  # Optimized: m5.large ($210.24\u002Fmonth)\n",[257,596,598],{"class":524,"line":597},13,[257,599,600],{},"  # Cost Reduction: 50% ($210.24\u002Fmonth, $2,522.88\u002Fyear)\n",[257,602,604],{"class":524,"line":603},14,[257,605,606],{},"  #\n",[257,608,610],{"class":524,"line":609},15,[257,611,612],{},"  # Usage analysis:\n",[257,614,616],{"class":524,"line":615},16,[257,617,618],{},"  # - CPU: avg 22%, max 41% (fits within 2 vCPU)\n",[257,620,622],{"class":524,"line":621},17,[257,623,624],{},"  # - Memory: avg 35%, max 52% of 16 GiB = 8.3 GiB (fits within 8 GiB)\n",[257,626,628],{"class":524,"line":627},18,[257,629,630],{},"  instance_types = [\"m5.large\"]\n",[257,632,634],{"class":524,"line":633},19,[257,635,547],{"emptyLinePlaceholder":546},[257,637,639],{"class":524,"line":638},20,[257,640,641],{},"  scaling_config {\n",[257,643,645],{"class":524,"line":644},21,[257,646,647],{},"    desired_size = 3\n",[257,649,651],{"class":524,"line":650},22,[257,652,653],{},"    max_size     = 5\n",[257,655,657],{"class":524,"line":656},23,[257,658,659],{},"    min_size     = 2\n",[257,661,663],{"class":524,"line":662},24,[257,664,665],{},"  }\n",[257,667,669],{"class":524,"line":668},25,[257,670,547],{"emptyLinePlaceholder":546},[257,672,674],{"class":524,"line":673},26,[257,675,676],{},"  update_config {\n",[257,678,680],{"class":524,"line":679},27,[257,681,682],{},"    max_unavailable = 1\n",[257,684,686],{"class":524,"line":685},28,[257,687,665],{},[257,689,691],{"class":524,"line":690},29,[257,692,547],{"emptyLinePlaceholder":546},[257,694,696],{"class":524,"line":695},30,[257,697,698],{},"  tags = merge(\n",[257,700,702],{"class":524,"line":701},31,[257,703,704],{},"    var.tags,\n",[257,706,708],{"class":524,"line":707},32,[257,709,710],{},"    {\n",[257,712,714],{"class":524,"line":713},33,[257,715,716],{},"      \"jetscale:optimized\"        = \"true\"\n",[257,718,720],{"class":524,"line":719},34,[257,721,722],{},"      \"jetscale:recommendation\"   = \"rec_eks_001\"\n",[257,724,726],{"class":524,"line":725},35,[257,727,728],{},"      \"jetscale:previous_type\"    = \"m5.xlarge\"\n",[257,730,732],{"class":524,"line":731},36,[257,733,734],{},"    }\n",[257,736,738],{"class":524,"line":737},37,[257,739,740],{},"  )\n",[257,742,744],{"class":524,"line":743},38,[257,745,746],{},"}\n",[10,748,749],{},[28,750,751],{},"Example: Graviton Migration",[439,753,755],{"className":517,"code":754,"language":519,"meta":447,"style":447},"# EKS Node Group Optimization: Graviton Migration\n# Generated by Jetscale on 2024-01-15\n\nresource \"aws_eks_node_group\" \"frontend_nodes\" {\n  cluster_name    = \"web-cluster\"\n  node_group_name = \"frontend-nodes\"\n  node_role_arn   = var.node_role_arn\n  subnet_ids      = var.subnet_ids\n\n  # Previous: m5.large, x86_64 ($280.32\u002Fmonth)\n  # Optimized: m6g.large, ARM64 ($224.26\u002Fmonth)\n  # Cost Reduction: 20% ($56.06\u002Fmonth, $672.72\u002Fyear)\n  instance_types = [\"m6g.large\"]\n\n  # ARM64 AMI required for Graviton instances\n  ami_type = \"AL2_ARM_64\"\n\n  scaling_config {\n    desired_size = 4\n    max_size     = 6\n    min_size     = 2\n  }\n\n  update_config {\n    max_unavailable = 1\n  }\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"        = \"true\"\n      \"jetscale:previous_type\"    = \"m5.large\"\n      \"jetscale:migration_type\"   = \"graviton\"\n    }\n  )\n}\n",[334,756,757,762,766,770,775,780,785,789,793,797,802,807,812,817,821,826,831,835,839,844,849,853,857,861,865,869,873,877,881,885,889,893,898,903,907,911],{"__ignoreMap":447},[257,758,759],{"class":524,"line":525},[257,760,761],{},"# EKS Node Group Optimization: Graviton Migration\n",[257,763,764],{"class":524,"line":531},[257,765,534],{},[257,767,768],{"class":524,"line":537},[257,769,547],{"emptyLinePlaceholder":546},[257,771,772],{"class":524,"line":543},[257,773,774],{},"resource \"aws_eks_node_group\" \"frontend_nodes\" {\n",[257,776,777],{"class":524,"line":550},[257,778,779],{},"  cluster_name    = \"web-cluster\"\n",[257,781,782],{"class":524,"line":556},[257,783,784],{},"  node_group_name = \"frontend-nodes\"\n",[257,786,787],{"class":524,"line":562},[257,788,571],{},[257,790,791],{"class":524,"line":568},[257,792,577],{},[257,794,795],{"class":524,"line":574},[257,796,547],{"emptyLinePlaceholder":546},[257,798,799],{"class":524,"line":580},[257,800,801],{},"  # Previous: m5.large, x86_64 ($280.32\u002Fmonth)\n",[257,803,804],{"class":524,"line":585},[257,805,806],{},"  # Optimized: m6g.large, ARM64 ($224.26\u002Fmonth)\n",[257,808,809],{"class":524,"line":591},[257,810,811],{},"  # Cost Reduction: 20% ($56.06\u002Fmonth, $672.72\u002Fyear)\n",[257,813,814],{"class":524,"line":597},[257,815,816],{},"  instance_types = [\"m6g.large\"]\n",[257,818,819],{"class":524,"line":603},[257,820,547],{"emptyLinePlaceholder":546},[257,822,823],{"class":524,"line":609},[257,824,825],{},"  # ARM64 AMI required for Graviton instances\n",[257,827,828],{"class":524,"line":615},[257,829,830],{},"  ami_type = \"AL2_ARM_64\"\n",[257,832,833],{"class":524,"line":621},[257,834,547],{"emptyLinePlaceholder":546},[257,836,837],{"class":524,"line":627},[257,838,641],{},[257,840,841],{"class":524,"line":633},[257,842,843],{},"    desired_size = 4\n",[257,845,846],{"class":524,"line":638},[257,847,848],{},"    max_size     = 6\n",[257,850,851],{"class":524,"line":644},[257,852,659],{},[257,854,855],{"class":524,"line":650},[257,856,665],{},[257,858,859],{"class":524,"line":656},[257,860,547],{"emptyLinePlaceholder":546},[257,862,863],{"class":524,"line":662},[257,864,676],{},[257,866,867],{"class":524,"line":668},[257,868,682],{},[257,870,871],{"class":524,"line":673},[257,872,665],{},[257,874,875],{"class":524,"line":679},[257,876,547],{"emptyLinePlaceholder":546},[257,878,879],{"class":524,"line":685},[257,880,698],{},[257,882,883],{"class":524,"line":690},[257,884,704],{},[257,886,887],{"class":524,"line":695},[257,888,710],{},[257,890,891],{"class":524,"line":701},[257,892,716],{},[257,894,895],{"class":524,"line":707},[257,896,897],{},"      \"jetscale:previous_type\"    = \"m5.large\"\n",[257,899,900],{"class":524,"line":713},[257,901,902],{},"      \"jetscale:migration_type\"   = \"graviton\"\n",[257,904,905],{"class":524,"line":719},[257,906,734],{},[257,908,909],{"class":524,"line":725},[257,910,740],{},[257,912,913],{"class":524,"line":731},[257,914,746],{},[14,916,918],{"id":917},"best-practices","Best Practices",[55,920,922],{"id":921},"testing-strategy","Testing Strategy",[10,924,925],{},[28,926,927],{},"Pre-Production Testing:",[929,930,931,934,937,940],"ol",{},[25,932,933],{},"Test instance type changes on non-production node groups first",[25,935,936],{},"Validate container image ARM64 compatibility before Graviton migration",[25,938,939],{},"Run Spot node groups alongside ON_DEMAND for a trial period",[25,941,942],{},"Monitor pod scheduling and resource requests\u002Flimits alignment",[10,944,945],{},[28,946,947],{},"Production Rollout:",[929,949,950,957,960,963],{},[25,951,952,953,956],{},"Use rolling updates (",[334,954,955],{},"max_unavailable = 1",") to minimize disruption",[25,958,959],{},"Monitor pod evictions and rescheduling during node replacement",[25,961,962],{},"Validate application health checks pass on new node types",[25,964,965],{},"Keep previous node group configuration for quick rollback",[55,967,969],{"id":968},"graviton-migration-checklist","Graviton Migration Checklist",[10,971,972],{},"Before migrating to Graviton (ARM64) instances:",[929,974,975,978,981,988,991],{},[25,976,977],{},"Verify all container images have ARM64 or multi-arch builds",[25,979,980],{},"Check for x86-specific binary dependencies in containers",[25,982,983,984,987],{},"Update AMI type to ",[334,985,986],{},"AL2_ARM_64"," in node group configuration",[25,989,990],{},"Test with a small node group before migrating all nodes",[25,992,993],{},"Monitor application performance for 48-72 hours post-migration",[55,995,997],{"id":996},"spot-instance-guidelines","Spot Instance Guidelines",[10,999,1000],{},[28,1001,1002],{},"Good candidates for Spot:",[22,1004,1005,1008,1011,1014,1017],{},[25,1006,1007],{},"Batch processing and data pipelines",[25,1009,1010],{},"CI\u002FCD build workers",[25,1012,1013],{},"Stateless microservices with multiple replicas",[25,1015,1016],{},"Development and testing workloads",[25,1018,1019],{},"Karpenter-managed nodes (handles interruptions natively)",[10,1021,1022],{},[28,1023,1024],{},"Avoid Spot for:",[22,1026,1027,1030,1033,1036],{},[25,1028,1029],{},"Single-node managed groups (no redundancy during reclaim)",[25,1031,1032],{},"Stateful workloads (databases, persistent queues)",[25,1034,1035],{},"Production-critical services with strict SLAs",[25,1037,1038],{},"Workloads with long initialization times",[55,1040,1042],{"id":1041},"capacity-planning","Capacity Planning",[22,1044,1045,1048,1051,1054],{},[25,1046,1047],{},"Jetscale uses conservative Spot pricing (minimum, not average) for cost estimates",[25,1049,1050],{},"Node group scaling configuration (min\u002Fmax\u002Fdesired) is preserved in recommendations",[25,1052,1053],{},"Control plane costs are included in cluster-level totals",[25,1055,1056],{},"Extended support clusters (Kubernetes 1.26 and earlier) incur higher control plane costs (~$438\u002Fmonth vs ~$73\u002Fmonth)",[14,1058,1060],{"id":1059},"common-optimization-patterns","Common Optimization Patterns",[55,1062,1064],{"id":1063},"pattern-1-over-provisioned-node-groups","Pattern 1: Over-Provisioned Node Groups",[10,1066,1067],{},[28,1068,1069],{},"Symptoms:",[22,1071,1072,1075,1078],{},[25,1073,1074],{},"CPU utilization consistently below 30%",[25,1076,1077],{},"Memory utilization below 40%",[25,1079,1080],{},"Nodes have significant unused capacity",[10,1082,1083],{},[28,1084,1085],{},"Jetscale Recommendation:",[22,1087,1088,1091,1094],{},[25,1089,1090],{},"Right-size to smaller instance types",[25,1092,1093],{},"Typical savings: 30-50%",[25,1095,1096],{},"Risk: Low (verify peak usage fits new capacity)",[55,1098,1100],{"id":1099},"pattern-2-graviton-migration-opportunity","Pattern 2: Graviton Migration Opportunity",[10,1102,1103],{},[28,1104,1069],{},[22,1106,1107,1110,1113],{},[25,1108,1109],{},"Running x86 instances (m5, c5, r5)",[25,1111,1112],{},"Containerized workloads (typically ARM-compatible)",[25,1114,1115],{},"No x86-specific binary dependencies",[10,1117,1118],{},[28,1119,1085],{},[22,1121,1122,1125,1128],{},[25,1123,1124],{},"Migrate to Graviton equivalents (m6g, c7g, r6g, t4g)",[25,1126,1127],{},"Typical savings: 10-40%",[25,1129,1130],{},"Risk: Low for most containerized workloads",[55,1132,1134],{"id":1133},"pattern-3-on_demand-batch-workers","Pattern 3: ON_DEMAND Batch Workers",[10,1136,1137],{},[28,1138,1069],{},[22,1140,1141,1144,1147],{},[25,1142,1143],{},"Batch processing or CI\u002FCD node groups",[25,1145,1146],{},"Fault-tolerant, stateless workloads",[25,1148,1149],{},"Running on ON_DEMAND capacity",[10,1151,1152],{},[28,1153,1085],{},[22,1155,1156,1159,1162],{},[25,1157,1158],{},"Switch to Spot capacity",[25,1160,1161],{},"Typical savings: 60-90%",[25,1163,1164],{},"Risk: Medium (Spot can be reclaimed, jobs must be restartable)",[55,1166,1168],{"id":1167},"pattern-4-legacy-kubernetes-version","Pattern 4: Legacy Kubernetes Version",[10,1170,1171],{},[28,1172,1069],{},[22,1174,1175,1178,1181],{},[25,1176,1177],{},"Kubernetes version 1.26 or earlier",[25,1179,1180],{},"Extended support charges (~$438\u002Fmonth control plane)",[25,1182,1183],{},"Standard support clusters cost ~$73\u002Fmonth",[10,1185,1186],{},[28,1187,1188],{},"Jetscale Observation:",[22,1190,1191,1194,1197],{},[25,1192,1193],{},"Extended support adds ~$365\u002Fmonth to control plane costs",[25,1195,1196],{},"Upgrading Kubernetes version reduces control plane costs by ~83%",[25,1198,1199],{},"Jetscale includes this cost in cluster-level totals for visibility",[14,1201,1203],{"id":1202},"troubleshooting","Troubleshooting",[55,1205,1207],{"id":1206},"recommendation-concerns","Recommendation Concerns",[10,1209,1210],{},[28,1211,1212],{},"Q: Will right-sizing cause application downtime?",[10,1214,1215,1216,1218],{},"A: Node group updates use rolling replacement. With ",[334,1217,955],{},", one node is replaced at a time. Pods are evicted and rescheduled on remaining nodes during the transition. Ensure your deployments have Pod Disruption Budgets (PDBs) configured for graceful handling.",[10,1220,1221],{},[28,1222,1223],{},"Q: How does Jetscale handle Karpenter-managed nodes?",[10,1225,1226],{},"A: Jetscale discovers Karpenter nodes by grouping EC2 instances that share the same cluster tag but aren't part of a managed node group. These are grouped by NodePool tag and analyzed as synthetic node groups. Karpenter's native Spot interruption handling makes it a strong candidate for Spot optimization.",[10,1228,1229],{},[28,1230,1231],{},"Q: What if memory metrics are unavailable?",[10,1233,1234],{},"A: If CloudWatch Container Insights is not enabled, Jetscale won't have memory utilization data. In this case, recommendations that reduce memory capacity by more than 25% are rejected as a safety measure. Enabling Container Insights provides more accurate and aggressive optimization opportunities.",[10,1236,1237],{},[28,1238,1239],{},"Q: Can I roll back a node group change?",[10,1241,1242],{},"A: Yes. Update the node group configuration back to the previous instance type and desired size. The rolling update process will replace nodes with the original configuration.",[55,1244,1246],{"id":1245},"performance-issues-after-optimization","Performance Issues After Optimization",[10,1248,1249],{},[28,1250,1251],{},"Symptom: Pods in Pending state after right-sizing",[10,1253,1254],{},"Possible causes:",[22,1256,1257,1260],{},[25,1258,1259],{},"New instance type has insufficient CPU or memory for pod resource requests",[25,1261,1262],{},"Node capacity doesn't match pod scheduling requirements",[10,1264,1265],{},[28,1266,1267],{},"Resolution:",[929,1269,1270,1273,1280,1283],{},[25,1271,1272],{},"Check pod resource requests against new node capacity",[25,1274,1275,1276,1279],{},"Verify ",[334,1277,1278],{},"kubectl describe node"," shows allocatable resources",[25,1281,1282],{},"Adjust pod requests\u002Flimits or increase node size if needed",[25,1284,1285],{},"Consider adding more nodes instead of larger nodes",[10,1287,1288],{},[28,1289,1290],{},"Symptom: Spot interruptions causing service disruption",[10,1292,1254],{},[22,1294,1295,1298,1301],{},[25,1296,1297],{},"Single-replica deployments on Spot nodes",[25,1299,1300],{},"No Pod Disruption Budget configured",[25,1302,1303],{},"Long graceful shutdown periods",[10,1305,1306],{},[28,1307,1267],{},[929,1309,1310,1313,1316,1319],{},[25,1311,1312],{},"Run multiple replicas across nodes for redundancy",[25,1314,1315],{},"Configure Pod Disruption Budgets",[25,1317,1318],{},"Use Karpenter for automatic Spot interruption handling",[25,1320,1321],{},"Consider mixed ON_DEMAND + SPOT node groups for critical services",[14,1323,1325],{"id":1324},"limitations","Limitations",[10,1327,1328],{},[28,1329,1330],{},"Not Currently Supported:",[22,1332,1333,1336,1339,1342,1345,1348],{},[25,1334,1335],{},"EKS Auto Mode clusters (AWS manages compute)",[25,1337,1338],{},"Fargate profile optimization",[25,1340,1341],{},"Cluster autoscaler configuration tuning",[25,1343,1344],{},"Pod-level resource optimization (requests\u002Flimits)",[25,1346,1347],{},"Multi-cluster orchestration",[25,1349,1350],{},"Reserved Instance recommendations for EKS nodes",[10,1352,1353],{},[28,1354,1355],{},"EKS-Specific Constraints:",[22,1357,1358,1361,1364,1367],{},[25,1359,1360],{},"All nodes in a managed node group must use the same instance type",[25,1362,1363],{},"Graviton migration requires ARM64-compatible container images",[25,1365,1366],{},"Spot optimization rejected for single-node managed groups",[25,1368,1369],{},"CloudWatch Container Insights needed for memory metrics",[14,1371,1373],{"id":1372},"api-integration","API Integration",[10,1375,1376],{},"Jetscale provides API access for programmatic optimization:",[439,1378,1382],{"className":1379,"code":1380,"language":1381,"meta":447,"style":447},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# List EKS recommendations\nGET \u002Fapi\u002Fv1\u002Frecommendations?resource_type=eks\n\n# Get specific recommendation details\nGET \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\n\n# Approve recommendation (generates Terraform)\nPOST \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fapprove\n\n# Retrieve generated Terraform\nGET \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fterraform\n","bash",[334,1383,1384,1390,1400,1404,1409,1416,1420,1425,1433,1437,1442],{"__ignoreMap":447},[257,1385,1386],{"class":524,"line":525},[257,1387,1389],{"class":1388},"sHwdD","# List EKS recommendations\n",[257,1391,1392,1396],{"class":524,"line":531},[257,1393,1395],{"class":1394},"sBMFI","GET",[257,1397,1399],{"class":1398},"sfazB"," \u002Fapi\u002Fv1\u002Frecommendations?resource_type=eks\n",[257,1401,1402],{"class":524,"line":537},[257,1403,547],{"emptyLinePlaceholder":546},[257,1405,1406],{"class":524,"line":543},[257,1407,1408],{"class":1388},"# Get specific recommendation details\n",[257,1410,1411,1413],{"class":524,"line":550},[257,1412,1395],{"class":1394},[257,1414,1415],{"class":1398}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\n",[257,1417,1418],{"class":524,"line":556},[257,1419,547],{"emptyLinePlaceholder":546},[257,1421,1422],{"class":524,"line":562},[257,1423,1424],{"class":1388},"# Approve recommendation (generates Terraform)\n",[257,1426,1427,1430],{"class":524,"line":568},[257,1428,1429],{"class":1394},"POST",[257,1431,1432],{"class":1398}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fapprove\n",[257,1434,1435],{"class":524,"line":574},[257,1436,547],{"emptyLinePlaceholder":546},[257,1438,1439],{"class":524,"line":580},[257,1440,1441],{"class":1388},"# Retrieve generated Terraform\n",[257,1443,1444,1446],{"class":524,"line":585},[257,1445,1395],{"class":1394},[257,1447,1448],{"class":1398}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fterraform\n",[10,1450,1451,1452,1457],{},"See our ",[1453,1454,1456],"a",{"href":1455},"\u002Fdocs\u002Fapi-reference","API Documentation"," for complete reference.",[14,1459,1461],{"id":1460},"support","Support",[10,1463,1464],{},"Need help with EKS optimization?",[22,1466,1467,1477,1486],{},[25,1468,1469,1472,1473],{},[28,1470,1471],{},"Email",": ",[1453,1474,1476],{"href":1475},"mailto:support@jetscale.ai","support@jetscale.ai",[25,1478,1479,1472,1482],{},[28,1480,1481],{},"Documentation",[1453,1483,1485],{"href":1484},"\u002Fdocs\u002Ffaq","FAQ",[25,1487,1488,1472,1491],{},[28,1489,1490],{},"GitHub Issues",[1453,1492,1496],{"href":1493,"rel":1494},"https:\u002F\u002Fgithub.com\u002FJetscale-ai\u002Fjetscale-docs\u002Fissues",[1495],"nofollow","Report a problem",[10,1498,1499],{},[28,1500,1501],{},"Related Documentation:",[22,1503,1504,1510,1516,1522,1528],{},[25,1505,1506],{},[1453,1507,1509],{"href":1508},"\u002Fdocs\u002Fservices\u002Fec2","EC2 Optimization",[25,1511,1512],{},[1453,1513,1515],{"href":1514},"\u002Fdocs\u002Fservices\u002Frds","RDS Optimization",[25,1517,1518],{},[1453,1519,1521],{"href":1520},"\u002Fdocs\u002Fservices\u002Febs","EBS Optimization",[25,1523,1524],{},[1453,1525,1527],{"href":1526},"\u002Fdocs\u002Fservices\u002Felasticache","ElastiCache Optimization",[25,1529,1530],{},[1453,1531,1533],{"href":1532},"\u002Fdocs\u002Fservices\u002Fs3","S3 Optimization",[1535,1536,1537],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":447,"searchDepth":531,"depth":531,"links":1539},[1540,1541,1545,1551,1557,1563,1569,1573,1574,1575],{"id":16,"depth":531,"text":17},{"id":52,"depth":531,"text":53,"children":1542},[1543,1544],{"id":57,"depth":537,"text":58},{"id":120,"depth":537,"text":121},{"id":127,"depth":531,"text":128,"children":1546},[1547,1548,1549,1550],{"id":131,"depth":537,"text":132},{"id":155,"depth":537,"text":156},{"id":179,"depth":537,"text":180},{"id":203,"depth":537,"text":204},{"id":221,"depth":531,"text":222,"children":1552},[1553,1554,1555,1556],{"id":225,"depth":537,"text":226},{"id":343,"depth":537,"text":344},{"id":423,"depth":537,"text":424},{"id":505,"depth":537,"text":506},{"id":917,"depth":531,"text":918,"children":1558},[1559,1560,1561,1562],{"id":921,"depth":537,"text":922},{"id":968,"depth":537,"text":969},{"id":996,"depth":537,"text":997},{"id":1041,"depth":537,"text":1042},{"id":1059,"depth":531,"text":1060,"children":1564},[1565,1566,1567,1568],{"id":1063,"depth":537,"text":1064},{"id":1099,"depth":537,"text":1100},{"id":1133,"depth":537,"text":1134},{"id":1167,"depth":537,"text":1168},{"id":1202,"depth":531,"text":1203,"children":1570},[1571,1572],{"id":1206,"depth":537,"text":1207},{"id":1245,"depth":537,"text":1246},{"id":1324,"depth":531,"text":1325},{"id":1372,"depth":531,"text":1373},{"id":1460,"depth":531,"text":1461},[1577,1578,1579],"optimization-methodology","provider-service-support","savings-methodology","Jetscale provides AI-powered cost optimization for Amazon EKS clusters. Our specialized agents analyze node group utilization, instance types, capacity configurations, and...","md","en",{},[],"Cloud Optimization","\u002Fdocs\u002Fservices\u002Feks","legacy-import",{"title":5,"description":1580},[],"docs\u002F5.services\u002F3.eks","high","services\u002Feks","SwH-aH7zTssiSxT58HqY8lE2mVx0xDg1DjBZ_zryUhs",[1595],{"title":1596,"path":1597,"stem":1598,"children":1599},"Docs","\u002Fdocs","docs",[1600,1603,1607,1611,1615,1619,1641,1645,1670,1674,1677],{"title":1601,"path":1597,"stem":1602},"Jetscale Documentation","docs\u002Findex",{"title":1604,"path":1605,"stem":1606},"Getting Started with Jetscale","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",{"title":1608,"path":1609,"stem":1610},"AWS Setup Guide","\u002Fdocs\u002Faws-setup","docs\u002F2.aws-setup",{"title":1612,"path":1613,"stem":1614},"Azure Setup Guide","\u002Fdocs\u002Fazure-setup","docs\u002F3.azure-setup",{"title":1616,"path":1617,"stem":1618},"How Jetscale Works","\u002Fdocs\u002Fhow-it-works","docs\u002F4.how-it-works",{"title":1620,"path":1621,"stem":1622,"children":1623},"Integrations","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations\u002Findex",[1624,1625,1629,1633,1637],{"title":1620,"path":1621,"stem":1622},{"title":1626,"path":1627,"stem":1628},"GitHub Integration","\u002Fdocs\u002Fintegrations\u002Fgithub","docs\u002F4.integrations\u002F1.github",{"title":1630,"path":1631,"stem":1632},"Jira Integration","\u002Fdocs\u002Fintegrations\u002Fjira","docs\u002F4.integrations\u002F2.jira",{"title":1634,"path":1635,"stem":1636},"Slack Integration","\u002Fdocs\u002Fintegrations\u002Fslack","docs\u002F4.integrations\u002F3.slack",{"title":1638,"path":1639,"stem":1640},"Bitbucket Integration","\u002Fdocs\u002Fintegrations\u002Fbitbucket","docs\u002F4.integrations\u002F4.bitbucket",{"title":1642,"path":1643,"stem":1644},"AI-Powered Analysis","\u002Fdocs\u002Fai-analysis","docs\u002F5.ai-analysis",{"title":1646,"path":1647,"stem":1648,"children":1649},"Supported Services","\u002Fdocs\u002Fservices","docs\u002F5.services\u002Findex",[1650,1651,1653,1655,1656,1658,1660,1662,1666],{"title":1646,"path":1647,"stem":1648},{"title":1521,"path":1520,"stem":1652},"docs\u002F5.services\u002F1.ebs",{"title":1509,"path":1508,"stem":1654},"docs\u002F5.services\u002F2.ec2",{"title":5,"path":1586,"stem":1590},{"title":1527,"path":1526,"stem":1657},"docs\u002F5.services\u002F4.elasticache",{"title":1515,"path":1514,"stem":1659},"docs\u002F5.services\u002F5.rds",{"title":1533,"path":1532,"stem":1661},"docs\u002F5.services\u002F6.s3",{"title":1663,"path":1664,"stem":1665},"Azure SQL Optimization","\u002Fdocs\u002Fservices\u002Fazure-sql","docs\u002F5.services\u002F7.azure-sql",{"title":1667,"path":1668,"stem":1669},"Azure VM Optimization","\u002Fdocs\u002Fservices\u002Fazure-vm","docs\u002F5.services\u002F8.azure-vm",{"title":1671,"path":1672,"stem":1673},"Recommendation Workflow","\u002Fdocs\u002Frecommendation-workflow","docs\u002F6.recommendation-workflow",{"title":1675,"path":1455,"stem":1676},"API Reference","docs\u002F7.api-reference",{"title":1485,"path":1484,"stem":1678},"docs\u002F8.faq",[1680,1682],{"title":1509,"path":1508,"stem":1654,"description":1681,"children":-1},"Jetscale provides AI-powered cost optimization for Amazon EC2 standalone instances. Our specialized agents analyze your compute workloads to identify right-sizing...",{"title":1527,"path":1526,"stem":1657,"description":1683,"children":-1},"Jetscale provides AI-powered cost optimization for Amazon ElastiCache including both Redis and Memcached clusters. Our specialized agents analyze your caching workloads to...",1788204005134]