More Info:
Enable node auto-repair so GKE automatically repairs nodes that fail health checks, keeping nodes healthy and reducing manual maintenance. Unhealthy nodes can degrade workload availability.Risk Level
LowAddress
SecurityCompliance Standards
- CIS GKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
On any machine with
gcloudinstalled and access to the project, list all node pools per cluster and location to scope what to review:For each cluster: -
For each node pool, retrieve and record its management settings, including auto-repair status:
Focus on
.management.autoRepair. -
Decide which node pools must have auto-repair enabled, considering:
- Workload criticality (production vs. dev/test)
- Tolerance for automatic node replacement and potential pod rescheduling
- Any special nodes where manual intervention is required (e.g., tightly coupled with external systems, stateful workloads without proper PodDisruptionBudgets).
-
For each node pool where
.management.autoRepairisfalseand automatic health-based repair is acceptable, enable node auto-repair: -
For any node pool where you intentionally choose not to enable auto-repair, document:
- The node pool name and cluster
- The business/technical justification (e.g., legacy workloads, special ops runbooks)
- The alternative process for detecting and repairing unhealthy nodes (monitoring alerts, manual runbooks).
-
Verify the final state for all node pools after changes:
Confirm
.autoRepairistruefor node pools where it should be enabled and that exceptions are explicitly documented.
Using kubectl
Using kubectl
kubectl cannot enable or configure GKE node auto-repair because it is a managed control-plane / node pool setting controlled via Google Cloud (console, gcloud, or IaC), not a Kubernetes API object. Use the cloud provider configuration as described in the Manual Steps section to remediate this finding.Automation
Automation
gcloud access to the project):- Save as
check-gke-autorepair.shand make executable: - Edit the
PROJECT_ID(and optionallyLOCATION_FILTER) variables in the script. - Run:
- Any row where
auto_repair_enabledisfalsemeans that node auto-repair is explicitly disabled for that node pool and should be reviewed. - Any row where
auto_repair_enabledisnull(missing) means the management settings could not be determined as expected and should be investigated manually. - For CISGKE 5.5.2, all production node pools should typically show
auto_repair_enabledastrueunless there is a documented exception.

