Skip to Content
Core InfraWorkload RightsizingDaemonSet Rightsizing By Node Size

Rightsize DaemonSets by Node Size
Available in v1.26.9+

DaemonSets are Kubernetes workloads that ensure a single pod runs on every node in a cluster. While this model is powerful, it introduces a unique optimization challenge: not all nodes are the same size.

A pod running on a small 4-core node often has very different resource needs than the same pod running on a large 64-core node. Applying a single resource recommendation across all nodes can lead to inefficient and risky outcomes.

DaemonSet Optimization by Node Size solves this problem by generating tailored recommendations based on the size of the node each DaemonSet pod runs on.

Enable DaemonSet rightsizing by node size

Via UI

Starting from Version 1.27.7

Navigate to the Custom Workloads page and click Enable on the DaemonSetNodeSize custom workload.

Enable DaemonSet by Node Size

For Versions Prior to 1.27.7

For versions prior to 1.27.7, enable DaemonSet rightsizing by node size by applying the following CustomOwnerGrouping resource:

apiVersion: analysis.scaleops.sh/v1alpha1 kind: CustomOwnerGrouping metadata: name: daemonsetnodesize namespace: scaleops-system spec: defaultAuto: false displayOptions: hideGeneratedSuffix: true fields: - nodeSize - ownerName enabled: true groupBy: positiveRegexMatch: false groupBys: - nodeSize: true positiveRegexMatch: true topOwnerController: kind: DaemonSet

Apply this YAML file as-is using kubectl apply:

kubectl apply -f daemonsetnodesize_yaml.yaml

Via Helm
Available in v1.28.9+

You can enable DaemonSet rightsizing by node size during installation or upgrade via Helm:

--set daemonsetNodeSizeOptimization.enabled=true

DaemonSet rightsizing automation behavior

Upon activation, ScaleOps will automatically conduct the following steps:

  • Detect all DaemonSet pods in your cluster
  • Group them by their parent DaemonSet and the size of the node they are running on
  • Create separate optimization recommendations for each group

DaemonSet by Node Size workloads

Automation behavior

After the feature has been activated, all workloads are available in the Workload Rightsizing page. By default, the automation strategy is Upon pod creation, so the updated request will be applied only during natural disruptions of the pod (can be changed in the policy level).

Workloads grouping, naming and default policies

Once the DaemonSet by size custom workload is enabled, the workloads in the workload rightsizing page will follow these rules:

  • A single recommendation (row) will be shown per DaemonSet and Node Size combination.
    • For example, for a DaemonSet called fluent-bit running across three different node sizes, you will see these three recommendations:
      • fluent-bit-4core16gib
      • fluent-bit-8core32gib
      • fluent-bit-16core64gib
  • Nodes are grouped into buckets based on their CPU cores and memory (e.g., 4core16gib, 8core32gib); Nodes with similar sizes are grouped together to prevent the creation of too many small groups.
  • DaemonSet specific optimization (like the DaemonSet smart policy) continue to work with the feature enabled.