How the operator detects configuration drift and unhealthy members
mainOn every reconciliation, the EtcdClusterReconciler compares the live state of a member's Pod against the desired configuration. The following table defines the actions taken based on the observed state:
| Observed state | Action | Phase Transition |
|---|---|---|
| Pod/PVC/cert don't exist (first time) | create them | Pending → Provisioning |
Pod missing out-of-band (was Ready) | recreate it | Provisioning |
Pod present, config/version drifted from EtcdCluster.Spec | recreate with latest config | Recreating |
| Pod present, matches desired config/version, but unhealthy | recreate with the same config/version | Recreating |
| Pod present, matches desired, healthy | nothing to do | (unchanged) |
Note: Every Pod creation (except for a healthy, matching Pod) increments the RecreateCount. A CORRUPT alarm on a member overrides these heuristics and forces the member directly into the Replacing phase.