Skip to main content

Quick reference

Controller not scaling nodes

  1. Check if a NodeScalingPolicy exists:
  2. Check the policy status:
    Look at status.conditions for error messages and status.lastScaleAction.
  3. Check controller logs:
    Look for:
    • "failed to evaluate scaling" — metric collection or evaluation errors
    • "cooldown active" — scaling is blocked by the cooldown period
    • "dry-run mode" — scaling is blocked by the dry-run setting
  4. Verify GKE credentials:
    Ensure GKE_PROJECT_ID, GKE_LOCATION, and GKE_CLUSTER_NAME are set.
  5. Verify Prometheus connectivity:

Pods not rebalancing

  1. Check if a RebalancePolicy exists:
  2. Check the imbalance score — it may be below the threshold:
    If all nodes show similar utilization percentages, the cluster is already balanced.
  3. Check for PDB conflicts. If spec.respectPDB is true (default), pods protected by PodDisruptionBudgets that would be violated are not moved:
  4. Check status.lastPlan on the RebalancePolicy for the last analysis result.
  5. Verify the schedule expression is correct — the controller uses standard cron syntax.

Autoscaler not responding to pending pods

  1. Check if the autoscaler pod is running:
  2. Check autoscaler logs for pending pod detection:
  3. Verify the pendingPodGracePeriod — pods must be pending for at least this duration (default 30s) before triggering a scale-up.
  4. Check if maxNodes has been reached:

CRD issues

If CRDs are missing or outdated:
If the controller fails to start with scheme registration errors, CRDs may need to be reinstalled before the controller pod starts.

Leader election issues

If running multiple replicas with leader election enabled:
If leader election is stuck, delete the lease to force re-election: