Simplified and Cost-Efficient GKE Node Management with NAP:
Secure your spot!
LogoLogo
PerfectScale.ioStart for FreeYour Account
  • Kubernetes Optimization
  • Getting started
    • How to onboard a cluster
    • Onboarding clusters programmatically
    • Onboarding with ArgoCD
    • Updating PerfectScale Agent resources
    • Re-onboarding a cluster
  • Enable automation
    • Automation setup instruction
    • Including a cluster, namespace or workload to the Automation
      • Configuring Automation for a cluster
      • Configuring Automation for a namespace
      • Configuring Automation for a workload
    • Excluding a namespace or workload from the Automation
    • Automation customization
    • Verifying Automation status
    • Exploring Automation KPIs
    • Self-healing mechanism for unschedulable pods
    • Disable automation
    • Troubleshooting
    • Automation with GitOps
  • Cloud billing integration
    • Connecting AWS CUR
    • Connecting Azure Cost Management
  • Clusters' metrics overview
  • Podfit | vertical pod right-sizing
    • Understanding 'At Risk' indicators
    • LimitRange and ResourceQuota
  • Infrafit | node right-sizing
  • Configure alerts
    • Alerts acknowledgement
  • Trends monitoring
  • Revisions history log
  • Product overview
    • How to monitor PerfectScale Agent
    • PerfectScale data collected
    • PerfectScale Autoscaler Objects' Events
    • Outbound Request Ports used by the Exporter and Autoscaler
    • PerfectScale Weekly Report
    • Product architecture
  • Customizations
    • Alerting
      • Resiliency alerts
      • Financial alerts
    • Pricing
      • Custom Pricing configuration
      • AWS CUR configuration
      • Azure Cost Management configuration
    • Ticketing & Bug Tracking
    • Communication & Messaging
      • Slack Integration
        • How to configure slack_token
        • How to configure routings
      • MS Teams Integration
        • How to configure teams_webhook
      • Datadog Alerts Integration
    • Label customizations
    • Grouping
    • Observability
    • Podfit labels
    • Optimization Policy customization
  • Administration
    • Cluster settings
    • User management
    • Roles and permissions
    • Subscription details
    • Help Center
  • PerfectScale trial
    • How to find your allocated vCPU?
  • PerfectScale Prometheus Exporter
  • Security
    • MFA
    • SSO
    • ps-agent RBAC Permissions
    • psc-autoscaler RBAC Permissions
    • ps-exporter via Proxy Configuration
  • Public API
  • Help PerfectScale to improve
  • Go to your account
Powered by GitBook
LogoLogo

© PerfectScale 2025

On this page
  • Onboarding instructions
  • Cluster configuration
  • Run PerfectScale exporter on specific nodes
  • Mix of Windows and Linux nodes
  • Windows containers support
  • Running PerfectScale with your existing KSM
  • Uninstalling PerfectScale Agent
  1. Getting started

How to onboard a cluster

Step-by-step guide on how to onboard your first cluster and start optimizing within a few minutes

PreviousGetting startedNextOnboarding clusters programmatically

Last updated 1 month ago

PerfectScale is compatible and can be deployed in any Kubernetes environment, including EKS/EKS Anywhere, GKE, AKS, KOPS, private cloud, and other Kubernetes distributions.

Onboarding instructions

  1. Login into the app.

  2. Once logged in, navigate to the Overview tab.

  3. You can see a button to connect a new Kubernetes cluster. To connect a new cluster, click the Add Cluster button. A pop-up window with the following steps will appear.

Cluster configuration

  1. In a popup window, click Copy to Clipboard and clone the helm chart provided on p.1.

    • 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

  1. Click the Generate Secret button.

For security reasons, PerfectScale does not store your secret key.

  1. Execute the command from Deploy PerfectScale.

PerfectScale supports Windows containers. To enable support for Windows containers, follow the instructions outlined here.

  1. Click on the Finish and Close button.

It is not supported to install multiple exporters in a single cluster, as it may result in unexpected results.

Your cluster will become visible only after it starts transmitting data.

Run PerfectScale exporter on specific nodes

PerfectScale allows running the exporter on particular nodes. To run the exporter on the specific nodes, use one of the following options:

  1. nodeSelector (in case there is no taint on the node).

  2. nodeSelector & toleration (in case of taint on the node).

In case you are using zsh shell, make sure to add noglob before the helm command

helm upgrade --install -n perfectscale --create-namespace perfectscale \
  --set secret.create=true \
  --set secret.clientId=**** \
  --set secret.clientSecret=**** \
  --set settings.clusterName=name \
  --set nodeSelector.type=monitoring \
  --set tolerations[0].effect=NoSchedule,tolerations[0].key=monitoring,tolerations[0].operator=Exists \
  --set kube-state-metrics.nodeSelector.type=monitoring \
  --set kube-state-metrics.tolerations[0].effect=NoSchedule,kube-state-metrics.tolerations[0].key=monitoring,kube-state-metrics.tolerations[0].operator=Exists \
  perfectscale/exporter

Mix of Windows and Linux nodes

If the cluster contains both Windows and Linux nodes, it is necessary to add the following extra nodeSelector to run PerfectScale exporter on the Linux nodes: --set nodeSelector.beta\\.kubernetes\\.io/os=linux --set kube-state-metrics.nodeSelector.beta\\.kubernetes\\.io/os=linux

For Step 4 in the Onboarding a cluster scenario above, utilize the subsequent command to designate the Windows nodes:

helm upgrade --install -n perfectscale --create-namespace perfectscale \
 	--set secret.create=true \
        --set secret.clientId=**** \
        --set secret.clientSecret=**** \
        --set settings.clusterName=name \
        --set nodeSelector.beta\\.kubernetes\\.io/os=linux \
        --set kube-state-metrics.nodeSelector.beta\\.kubernetes\\.io/os=linux \
 	perfect scale/exporter

Windows containers support

Make sure you are using PerfectScale exporter version 1.0.53 or later, to enable Windows containers support.

helm upgrade --install -n perfectscale --create-namespace perfectscale \
      --set secret.create=true \
      --set secret.clientId=**** \
      --set secret.clientSecret=**** \
      --set settings.clusterName=your-dev-cluster \
      --set settings.deployWindowsExporter=true \
      --set settings.windowsExporterEnabled=true \
      --set settings.windowsExporterNamespace="perfectscale" \
      --set settings.windowsExporterPort="9182" \
      --set settings.windowsExporterLabelSelector="app.kubernetes.io/name=prometheus-windows-exporter"     
      perfectscale/exporter
  • Make sure the Helm parameter windowsExporterEnabled is set to true

  • If the windows-exporter should be deployed by the PerfectScale Helm set deployWindowsExporter=true. In that case, no additional configurations are needed, as the default values will be sufficient.

  • If deployWindowsExporter set tofalse, the additional parameters listed below need to be configured. Helm parameters should be configured according to the user’s environment:

    • windowsExporterNamespace

    • windowsExporterPort

    • windowsExporterLabelSelector

Running PerfectScale with your existing KSM

We recommend adopting PerfectScale KSM. However, if you want to use your existing KSM, ensure that you implement the expanded configurations described below.

Step 1: Configure PerfectScale exporter

helm upgrade --install -n perfectscale --create-namespace perfectscale \
      --set secret.create=true \
      --set secret.clientId=2bc3acb5-ad47-484e-95ad-4340a4b3e1fc \
      --set secret.clientSecret=c54449c1-17df-4581-a62f-9517d381635e \
      --set settings.clusterName=test \
      --set settings.deployKubeStateMetrics: false \
      --set settings.scraper.scrapeExternalKSM: true \
      --set settings.scraper.numberOfScrapers: 1 \
      --set settings.scraper.scrapeNamespace: "monitoring" \ # Select a specific namespace or leave it empty to apply to the entire cluster
      --set settings.scraper.labelSelector: "app.kubernetes.io/part-of in (kube-state-metrics-pod,kube-state-metrics)" \
      perfectscale/exporter

PerfectScale also supports a distributed kube-state-metrics setup. To enable PerfectScale to gather metrics from all your KSMs effectively, you need to specify more than one scraper. Usually, we recommend specifying ¼ of your total KSMs number. For example, for 20 kube-state-metrics:

--set settings.scraper.numberOfScrapers: 5

Step 2: Expand the KSM configuration

To allow PerfectScale to gather all the necessary metrics, additional KSM configurations are required.

It is important to include all the listed configuration parameters to prevent potential issues and ensure PerfectScale runs smoothly.

metricLabelsAllowlist:
  - nodes=[*]
  - pods=[*]
  - namespaces=[*]
  - limitranges
  - resourcequotas
metricAnnotationsAllowList:
  - pods=[*] 

Uninstalling PerfectScale Agent

To uninstall the PerfectScale Agent, execute the following command

helm -n perfectscale  uninstall psc-exporter

To provision clusters dynamically, follow the instructions for .

PerfectScale does not support Windows nodes. If your cluster contains both Windows and Linux nodes, adding the nodeSelector to run PerfectScale exporter on the Linux nodes is necessary. Follow the provided to run PerfectScale on these nodes.

Enter a name for your cluster and select the desired :

The Optimization Policy feature allows you to specify how your resources should be allocated in order to support the individual needs of your workloads. Define the policies that best suit your environment and business goals, depending on whether you want to maximize cost savings or provide extra headroom to maintain the resilience of mission-critical services. The Optimization Policy can be set for the entire and for a specific . The workload's Optimization Policy takes precedence and will override the value defined at the cluster level.

Discover more about customizing the Optimization policy .

If you are utilizing both Windows and Linux nodes within the cluster, it is necessary to run PerfectScale exporter on the Linux nodes. You can do it following the instructions -> .

The newly added cluster will appear under the Clusters list in the Overview tab. Once the becomes green, the cluster data will appear, which indicates successful cluster creation.

Discover additional information regarding the .

PerfectScale supports Windows-based containers, allowing you to optimize and manage them seamlessly. To enable this feature, as a Step 4 in a , execute the following command:

To run PerfectScale with your existing KSM, you need to provide additional parameters during the installation of the PerfectScale Agent. While to PerfectScale, use this Helm chart as Step 4 instead of the default one:

For labelSelector, PerfectScale utilizes kubernetes labels selectors syntax. For more information, .

Onboarding clusters programmatically
here
💡
Overview
visit the official documentation
extra instructions
Mix of Windows and Linux nodes
cluster configuration
connecting the cluster
PerfectScale
Optimization Policy
cluster
Agent Status
workload
Onboard first cluster
Cluster configuration
Agent status
Onboard first cluster
Cluster configuration
Agent status