Kubernetes architecture is a collection of core components in the Kubernetes open-source container management system. Organizations use Kubernetes to run and manage containerized applications and services on clusters of physical or virtual machines across on-premises, public, private, and hybrid clouds. It simplifies the orchestration of Kubernetes infrastructure and applications in cloud-native environments by automating tasks during a container's life cycle, such as provisioning, deployment, networking, scaling, and load balancing.
A Kubernetes environment consists of a set of cluster nodes (physical or virtual machines) that manage individual containers and their workloads, a distributed storage system to keep the cluster state consistent, and one or more control planes that manage global functions. Loosely coupled Kubernetes architecture allows teams to develop, test, and deploy services independently, so they can work in parallel without impacting each other.
Key components of Kubernetes architecture include:
- Worker nodes: Nodes are the machines where containers are deployed and executed. Worker nodes run the Kubernetes runtime environment and host components such as the kubelet, kube-proxy, and container runtime (e.g., Docker, containers, or CRI-O).
- Master node: The node responsible for managing the cluster that includes the application programming interface (API) server, scheduler, and controller manager.
- Pods: One or more co-located containers that share the same network namespace, which enables them to communicate with each other using localhost. Pods are the basic building block of Kubernetes.
- API server: The primary control plane component that exposes the Kubernetes API, allowing users and other components to interact with the cluster.
- Scheduler: This function assigns pods (i.e., groups of containers) to nodes based on resource availability, constraints, and other policies to efficiently distribute workloads across the cluster.
- Controller manager: This function oversees controllers that monitor the cluster's desired state and take actions to maintain that state to ensure it matches the desired state defined in the API server.
- Kubelet: An agent running on each worker node responsible for maintaining the node's state, managing containers, and communicating with the API server.
- Kube-proxy: Kube-proxy performs load balancing and manages network routing rules to enable network communication between services or pods within the cluster.
- Etcd: A distributed key value that stores configuration data and state information.
When efficiently working together, these Kubernetes architecture components provide a resilient, scalable, and self-healing platform for managing containerized applications in Kubernetes. Learn more about Kubernetes architecture — including how to automate full-stack Kubernetes observability — by exploring Kubernetes monitoring.