Node group view
Gain insights and identify the most impactful optimization opportunities within the node groups
This view provides a comprehensive and granular breakdown of all node groups within a cluster. It facilitates immediate identification of resource inefficiencies, enables quick prioritization of optimization tasks for optimal results, and unlocks further deep investigation.

Data table
Node group <none> contains nodes whose labels were not identified (for example, custom labels). In that case, we recommend you group such nodes manually by configuring the Label Customizations Profile.

Node Group
This displays the Node Group Name. To sort or filter data, click on a column title or use a drop-down list.
Architecture
This displays the Node Architecture (ARM, x86). You can sort or filter data by clicking on a column title or using a drop-down list.
Nodes (avg & max)
This displays the average and maximum number of nodes in a specific node group. Click on a column title to sort the data.
Reservation
Display the reservation type of nodes in the group. To sort or filter data, click on a column title or use a drop-down list.
Avg Cost/h
Displays the average node group cost per hour. Click on a column title to sort data.
Total Cost
Displays the total node group cost. Click on a column title to sort data.
Idle Cost
Displays the cost of the space in a node group that has never been used. Click on a column title to sort the data.
Potential savings
Displays the estimated dollar savings by applying node recommendations.
Last Seen
Displays the last time PerfectScale observed the Node Group.
Utilization
A visual representation of CPU and Memory Utilization (allocation, request, and usage) based on the selected usage percentile. Use a drop-down list to filter data with the needed value.
Node Groups Total
Shows the total cost and idle of the nodes.
Diving into the node group
By clicking on the node group, you will be navigated to the Node Group Details screen. Here, you can get a detailed view of the running workloads within this group or review the distribution of node types along with relevant data for further analysis.
Once you are in the Node Group, you can easily explore the data with various levels of granularity based on your needs:
PerfectScale automatically detects if a cluster autoscaler, for example, Karpenter, is running within a specific node group. When detected, a corresponding label is displayed next to the node group name in the top panel:
Karpenter
ClusterAutoscaler
Unknown

⚡️ Node recommendations
Node recommendations are not available when Karpenter is installed in the cluster.
💡 If the current setup is cost-optimal, PerfectScale will not display recommendations, as the environment is considered well-balanced. In this case, a No new recommendations available banner will be shown. However, you can still access node recommendations by clicking Compare All.

Node Recommendations is a powerful feature that provides actionable, data-driven insights to help you choose the optimal node type for your workloads and streamline the overall optimization process. Also, this view delivers the estimated savings you can achieve by applying the recommendations, enabling better forecasting and budget planning.
PerfectScale continuously analyzes your node groups and recommends alternative instance types that can run the same workloads at a lower cost. It takes into account workload resource requests, DaemonSet overhead, scheduling constraints, and instance compatibility to ensure accurate and reliable recommendations.
Node recommendations are optimized for steady-state workloads (e.g., Deployments, StatefulSets). Bursty workloads like Jobs or CI pipelines may yield less accurate results due to their ephemeral nature.
Click the Show button to expand the view and see the top four best-fit node type recommendations, ranked by achievable savings, with the best match listed first.

Understanding recommendations
PerfectScale provides tailored node recommendations to help you optimize costs while ensuring your workloads run efficiently. The following outlines how these recommendations are calculated:
Only instance types from compatible families are considered (for example, general-purpose remains within general-purpose, etc.).
Each instance takes into account the largest single workload, including DaemonSet overhead.
PerfectScale simulates scheduling before providing the recommendation, ensuring all workloads can be successfully placed on the recommended number of nodes.
GPU-aware recommendations are not currently supported. If a GPU workload is detected, a disclaimer will be displayed to indicate this limitation.


The recommendations widget provides a recommended node type as well as node details, including instance type, resource allocation, average number of nodes, and the listed hourly node cost.
PerfectScale also displays the projected cost impact, both hourly and monthly, after implementing the recommendations, along with the percentage difference compared to current costs. These values are calculated over a 30-day period using list pricing.
The price comparison between the original and recommended nodes is performed on a like-for-like basis: on-demand to on-demand and spot to spot. PerfectScale does not factor in any discounts the customer currently has on their existing nodes, as we cannot predict what discounts will apply to the recommended nodes if the change is made.
PerfectScale highly values your feedback on node recommendations — don’t forget to click the "Is this helpful?" button to let us know!

Accessing the full recommendations list
To view all available node recommendations, click the Compare All button. This will open the complete list, which you can search by instance family or type and sort by potential savings, projected cost, and other criteria to quickly find the nodes that best fit your needs.

Muting the recommendations
To hide recommendations for a specific node group, click the Mute button for that node group. PerfectScale will stop displaying recommendations for it. You can restore them at any time by clicking Unmute.

Node group details
Upper panel
Node Group indicates the name of the node group associated with the displayed data.
Optimization Policy indicates the cluster policy that specifies how your resources should be allocated to support the individual needs of your workloads. Learn more about policies here.
Timeframe allows you to check the data for a specific time period: click on the drop-down list in the upper right corner and select one of the existing options.
Seamlessly Export and effortlessly share your data by exporting it into a .csv file for further analysis.
Node Group Resources Utilization
To view data at a specific percentile, use the Utilization filter. The filter will impact both the charts and the table.

Charts

Cost per Node Type displays the cost trend of the Node Types over the selected timeframe.
CPU displays the allocated, requested, and used amount of CPU (cores) with the selected usage percentile in the group over time.
Memory displays the allocated, requested, and used amount of Memory (GB) with the selected usage percentile in the group over time.
Node group data table
Node Type
Instance Type Name. Click on a column title or use a drop-down list to sort or filter data.
Architecture
Node Architecture. Click on a column title or use a drop-down list to sort or filter data.
Reservation
Node reservation type. Click on a column title or use a drop-down list to sort or filter data.
CPU/Mem (node)
Node size. Click on a column title to sort data.
Nodes avg/max
Average and maximum number of nodes with a specific type. Click on a column title to sort data.
Avg Pods per Node
Current average number of pods per the node in the node group.
Max Pods per Node
The maximum possible pods that can be scheduled on the node.
Running Hours
Total instance running hours.
Avg Cost/h
Average cost per hour of the instance with the specific type. Click on a column title to sort data.
Total Cost
Total cost of nodes with the specific type. Click on a column title to sort data.
Idle Cost
Cost of the space in nodes with the specific types that has never been used. Click on a column title to sort the data.
Last Seen
Last time PerfectScale observed node with a specific type.
Utilization
CPU and Memory Utilization (allocation, request, and usage) based on the selected usage percentile. Use a drop-down list to filter data with the needed value.
Clicking on a specific node type will navigate you to the workloads table, displaying the workloads associated with that node type.
This view is particularly helpful for identifying the most wasteful workload running on the node with the selected type and providing data-driven recommendations on how to eliminate it in a few clicks.
To explore the workload details at a deeper level, click on the specific workload to open a Zoom-in window that provides an in-depth view.
Workloads view
Diving into the workloads running on a specific node enables you to seamlessly identify which workloads contribute the most to resource waste due to over-provisioning and adjust resource allocations with data-driven recommendations, creating new opportunities to optimize your underlying Kubernetes infrastructure.

Workload
Indicates the name of the workload.
Automation
Displays the automation status of a particular workload. You can easily sort the data by automation status to focus on the most relevant information for further investigation.

Type
Indicates the type of the workload.
Namespace
Indicates the workloads' namespace.
Running Hours
The workload running hours.
Total Cost
The total cost of allocated resources of the workload.
Pod Waste
The total cost of reducible workload resources.
Increase Needed
An estimated cost increase associated with implementing the recommendation to resolve resiliency risks caused by underprovisioned resources.
Potential Savings
An estimated dollar savings by applying workload sizing recommendations.
Container
Indicates the container of the workload.
Labels and Policies view

Optimization Policy
Displays the Optimization policy associated with the workload:
MaxSavings - maximum cost savings, the best for non-production environments
Balanced (default) - optimally balances cost and resiliency
ExtraHeadroom - the best fit for latency-sensitive environments
MaxHeadroom - keeps the environment above the highest spikes
Labels
Displays the label associated with the workload. You can select up to two labels to display.
To configure the label, click on the gear button. Then, choose the desired labels to be displayed and click the Apply button. Once the changes are applied, the values corresponding to the selected workload keys will be displayed.
The Workload labels have higher precedence than Namespace labels. If the Workload label and Namespace label have the same name, only the Workload label will display.
HPA view
The HPA view provides a clear overview of workloads utilizing Horizontal Pod Autoscaler (HPA). This feature enables users to quickly identify the workloads where HPA has been introduced and adjust HPA thresholds with provided informative tooltips that offer tailored recommendations. These recommendations are particularly helpful in optimizing scaling decisions, minimizing resource waste, and ensuring efficient operation of workloads.

HPA
Indicates whether HPA has been introduced for the workload. You can easily sort the column by clicking the header or apply specific filters.
CPU (%)
Displays the trigger for HPA by CPU. For insights on threshold recommendations, simply hover over the warning tooltip. You can easily sort the column by its values by clicking the header.
There are two types of indicators to be aware of:
A red indication signifies that the threshold is below 60%, indicating potential significant CPU waste.
A yellow indication suggests that the threshold falls between 60% and 80%, pointing to potential moderate CPU waste.
Memory (%)
Displays the trigger for HPA by Memory. For insights on threshold recommendations, simply hover over the warning tooltip. You can easily sort the column by its values by clicking on the header.
There are two types of indicators to be aware of:
A red indication signifies that the threshold is below 60%, indicating potential significant Memory waste.
A yellow indication suggests that the threshold falls between 60% and 80%, pointing to potential moderate Memory waste.
Custom metric
Indicates whether a Custom metric has been detected. You can easily sort the column by clicking the header or apply specific filters.
Workloads Chart view
The workloads trend chart helps you identify waste and cost trends within the Node Group, directing your focus to the most critical and valuable aspects.

1. Scope
Select whether you want to display the workload data by waste or cost using this selector.
2. Workload Type
Filter the data by the workload type.
3. Interval
Select the interval for data display based on your desired data granularity.
4. Legend
Use the workloads legend to include or exclude the particular workloads from the chart.
Maximize your productivity by utilizing Shortcuts.
Ctrl/Command+Clicklegend entity = Select/Deselect the entity. Allows to do a multi-select.Clickchart/legend entity = select one or all entities.
5. Limit Selector
Choose a limit from the dropdown (from 1 to 15) to exhibit only the top N entities
The entities not falling within the specified limit will be consolidated to Other on the diagram. To view entities beyond the limit, use the Previous and Next buttons.
Unevictable Pods view
Unevictable Pods provides you clear visibility into the workloads preventing nodes from being removed from a cluster. In the Unevictable Pods view, you can explore nodes and their pods, quickly identify pods that cannot be evicted, and access the detailed pod and node data for further investigation. By combining a cluster-wide view with node-level detail, it helps you seamlessly identify and address scale-down blockers, improve bin-packing, maximize the efficiency of your cluster autoscaling solution (like Karpenter, or Cluster Autoscaler), and ultimately optimize your K8s cloud costs.

Getting started
In Infrafit, select the desired node group and switch to the Unevictable Pods view. The chart displays all nodes from the currently selected node group, using the latest available snapshot by default.
Snapshot selector
Use the date picker in the top-right corner to select a specific snapshot (up to one month back).

Top panel summary
The top panel shows a summary of the selected node group across node types, including total running pods, as well as the number of unevictable pods. This helps you identify whether unevictable pods are present and could affect scale-down, highlighting savings opportunities.

Instance charts
Use the Instances charts for deeper analysis. This view shows which pods are running on each instance, their share of resources, and whether any of them are unevictable, helping you quickly understand if pods may impact scale-down.

View by resource type
Switch between CPU, Memory, and GPU views using the view selector to display data by a specific resource type.
Node cards

Each node is represented as a card displaying the following information:
Resource bars: Horizontal bars showing requested vs. total capacity for CPU, RAM, and GPU.
Pod treemap: Pods inside each node are displayed as a treemap. Unevictable pods are highlighted with a red border for quick identification.
Bottom labels: Each card shows the node's taints and a count of unevictable pods.
By hovering over a pod, you can see its details in the tooltip. However, if you need more extensive view, click on a pod or a specific node, so you can get a full details in the sidebar.
By clicking on any node or pod, you can open the sidebar detail view, which includes:
Item info — name, namespace, resource requests and limits, and other key metadata
Resources utilized — a breakdown of actual resource usage
Labels — all Kubernetes labels applied to the node or pod
Annotations — all Kubernetes annotations associated with the item
and more

Filters and sorting
Use the Filter sidebar to narrow down the view by node-level or pod-level criteria. Filters allow you to focus on specific subsets of your cluster, such as nodes with taints or pods in a particular namespace, etc.
Use the Sort dropdown to reorder nodes based on different criteria, such as idle, resource utilization or unevictable pod count.
Summary

The chart header displays key totals at a glance:
Unevictable count — Total number of unevictable pods across visible nodes.
Visible Nodes — Number of nodes currently displayed (after filters).
Visible Pods — Number of pods currently displayed (after filters).
Unevictable pods report provides a text summary of all unevictable pod issues across the selected node group. The summary consolidates all unevictable pod details into a single document that can be copied out for sharing or further analysis.
Last updated
Was this helpful?