Management Plane vs Control Plane vs Data Plane
The 3 Planes in distributed systems / clouds:
Management Plane
- manage and push configs to the Control Plane and Data Plane.
- directly used by admins, either through code (e.g. check in config files to Git repo to be picked up by CI/CD) or UI (e.g. modify configs in cloud console web UI), or CLI / API.
- slow rate of change.
Control Plane
- input: configs from the Management Plane and signals from the Data Plane.
- state transition initiated by events:
- dataplane signals.
- config change triggered by the user (from the Management Plane).
- time-triggered jobs, e.g. backups.
- state transition initiated by events:
- output: control instructions to the Data Plane.
- determine which path the data plane will take.
- ensures the data plane is operating with correct state as provided by the management plane (the configs) or a dynamic control algorithm (like network routing protocol).
- medium rate of change.
Data Plane
- the actual services, databases etc.
- controlled by the Control Plane.
- fast rate of change.
Availability Requirements
Data Plane > Control Plane > Management Plane.
In Kubernetes
Kubernetes only mentions control plane nodes (control plane) and worker nodes (data plane). If you must add a management plane, the you can distinguish management plane and control plane by whether admin users can directly modify.
- Management Plane: the APIs (Custom Objects) that are exposed to the admin users.
- Control Plane: read from management plane objects and trigger changes in services / deployments / storage.
- Data Plane: services consumed by external users.