Kubernetes - Components
Kubernetes installation has three kinds of components:
- Master components implement global behavior of the cluster, usually all running on a single master node that doesn't run any workloads.
- Node components implement local behavior of their node.
- Addons are pods and services that extend standard cluster behavior.
If you are running on a managed Kubernetes cluster like GKE, you don't have to worry about these basic components as they are handled for you.
Master Component Examples
API Server (
kube-apiserver): Exposes Kubernetes API for
kube-scheduler): Assigns unscheduled pods to nodes to be executed.
Controller-Manager Server (
kube-controller-manager): Runs and manages Kubernetes controllers; they 1) have a desired state 2) watch current state 3) act to achieve or maintain the desired state.
Addon Manager Server (
kube-addon-manager): Manages the addons.
Cloud Controller-Manager Server (
cloud-controller-manager): Runs and manages Kubernetes controllers that interact with various cloud providers.
Cluster State Store (
etcd): Runs and manages
etcd key-value store where Kubernetes stores the cluster data. Your applications will keep on running if
etcd dies, but you can't update them.
Node Component Examples
kubelet): An agent that runs on each node in the cluster. It makes sure that containers are running in a pod, and kills the containers when it sees that the pod has been marked as "Terminating".
kube-proxy): Maintains network rules on the node and performs connection forwarding.
Container Runtime: Runtime is the software responsible for running the containers, usually Docker.
kube-dns): Serves DNS records for Kubernetes services, each cluster should have one and all pod containers in the cluster will include this DNS server in their DNS searches.
kubernetes-dashboard): Web-based UI for Kubernetes clusters.
Container Resource Monitoring: Records generic time-series metrics about containers.
Cluster-level Logging: Saves container logs to a central log store for browsing.