Originally a part of kube-controller-manager, the Kubernetes Cloud Controller Manager (cloud-controller-manager) provides cloud-specific control loops. The reason for the separation of Cloud Controller Manager is to allow for the easier evolution of cloud-specific connectors (providers) code, which in most cases, is released at different cadences than the core Kubernetes code.
When enabling cloud-controller-manager, the cloud-specific control loops in kube-controller-manager must be disabled. Then, the following controllers will depend on the cloud provider's implementation:
Node Controller: The provider is used for determining a node's status and detecting if the node was deleted.
Route Controller: Requires the provider for setting up network routing.
Service Controller: Manages load balancers via the provider.
Volume Controller: Manages storage volumes using the provider.