### 1. `TidbPodEvicter` Controller

*   **Why (The Goal):** To relieve resource pressure on an overloaded node.
*   **When (The Trigger):** When a node's CPU or Memory utilization exceeds a predefined threshold.
*   **What it does:** It identifies the TiDB pod(s) contributing most to the high load by scoring them based on current usage and recent usage delta. It then **gracefully evicts** the highest-scoring pod(s) to bring the node's resources back to a healthy level.

### 2. `NodeRebalance` Controller

*   **Why (The Goal):** To safely drain a node that is about to be terminated, typically a spot instance that received a rebalance recommendation from the cloud provider.
*   **When (The Trigger):** When a node is marked with a special "rebalance signal" taint.
*   **What it does:** It **gracefully evicts** all pods from the signaled node. This allows the pods to be rescheduled onto other healthy nodes before the underlying instance is shut down, preventing service disruption.

### 3. `ZoneRedundantEvicter` Controller

*   **Why (The Goal):** To enforce high availability by ensuring workloads are running in the designated primary availability zone.
*   **When (The Trigger):** Periodically, this controller checks for pods running on nodes that are not in the "main" zone.
*   **What it does:** It **gracefully evicts** pods from nodes in standby zones. If a node is unreachable, it will **force-delete** the pod to allow Kubernetes to reschedule it in the main zone.

### 4. `TidbPod Clean Controller`

*   **Why (The Goal):** To maintain cluster health by removing non-functional pods.
*   **When (The Trigger):** When a TiDB pod has entered a `Terminated` state (e.g., it has crashed or exited unexpectedly).
*   **What it does:** It **deletes the pod object** from Kubernetes. This is not an eviction (the pod is already stopped); it's a cleanup action to allow the ReplicaSet or StatefulSet to create a replacement pod.
