Kubernetes components
Kubernetes Cluster spans over multiple nodes, the master (Control Plane) should be separated from worker Nodes
kube-apiserver
Master only component. Accepts user request. Stores resources definitions in etcd
.
etcd
Master only component. Key-value store that is highly available. Used to store all cluster data.
kube-scheduler
Master only component. Materializes user requests, watch
es the kube-apiserver, decides where and when schedule PODs.
PODs definition may contain some data that affects kube-scheduler
:
- affinity/anti-affinity
- nodeSelector
- taints/tolerations
- reservations/limits
It is possible to write custom scheduler
kube-controller-manager
Master only component. Controllers execute routine tasks to synchronize desired state (typically called spec
) with observed state.
Notable mentions:
- Node Controller - monitors Node lifecycle, responds when the Node goes down
- Replication Controller - manages *-controller
s, e.g., deployment-controller
- Endpoints Controller - populates Endpoint
- Service Account Controller - creates accounts and access tokens for namespaces
kubelet
Master/Worker component. Resides on every Node. Connects to the kube-apiserver
. Starts the actual containers via the container runtime.
Provides health-checks
kube-proxy
Master/Worker component. Main network component, watches the service
s and materializes their rule on the Nodes (e.g. handles iptables
)
References
- https://kubernetes.io/docs/concepts/overview/components/
- https://engineering.bitnami.com/articles/a-deep-dive-into-kubernetes-controllers.html