The Kubernetes documentation uses the example that a controller is like your heat thermostat. The position of the dial is its desired state, the current temperature is its actual state, and the thermostat constantly applies or removes heat in an effort to keep the two in sync.
This is how a Kubernetes controller works - it is a loop that watches the state of your cluster and makes changes as needed, always working to maintain your desired state.