The Cloud Controller Manager (CCM) is a specialized control plane component that integrates Kubernetes with the underlying cloud provider's APIs. It was introduced to decouple the core Kubernetes code from cloud-provider-specific code, making Kubernetes more modular and easier to maintain.

Key functions of the Cloud Controller Manager:

  1. Node Controller:
  1. Route Controller:
  1. Service Controller:

Volume Controller (in some implementations):

Benefits of the CCM architecture:

  1. Modularity: Cloud providers can develop and release features without modifying the core Kubernetes code
  2. Maintenance: The core Kubernetes developers don't need to maintain cloud-specific code
  3. Flexibility: You can run Kubernetes with no CCM (for on-premises), with the built-in CCM for supported providers, or with a custom CCM
  4. Independence: Cloud providers can update their integrations on their own release cycles

Examples of cloud controller managers:

In a cloud-based Kubernetes deployment, the CCM is typically deployed as a DaemonSet or Deployment in the kube-system namespace. In self-hosted or bare-metal Kubernetes deployments, you might not use a CCM at all, or you might use a custom one for your infrastructure provider.

Before the CCM architecture, all cloud-specific code was embedded in the core Kubernetes components, which made maintenance challenging. The separation has been a significant improvement in the modularity of Kubernetes.