Kubernetes is a container orchestration platform that automates the deployment, scaling, and management of containerized applications. It comprises several components that work together to provide a robust and scalable container orchestration environment. Here are key Kubernetes components:
Master Components:
API Server:
- Acts as the front end for the Kubernetes control plane.
- Exposes the Kubernetes API and processes RESTful API requests.
etcd:
- Consistent and highly-available key-value store used as Kubernetes’ backing store for all cluster data.
Controller Manager:
- Runs controller processes that regulate the state of the system.
- Examples include Node Controller, Replication Controller, and Endpoints Controller.
Scheduler:
- Watches for newly created Pods with no assigned node and selects a node for them to run on.
- Considers factors like resource requirements, affinity/anti-affinity, and more.
Node Components:
Kubelet:
- An agent that runs on each node in the cluster.
- Ensures that containers are running in a Pod.
Kube-Proxy:
- Maintains network rules on nodes.
- Enables communication to and from Pods.
Container Runtime:
- Software responsible for running containers.
- Common runtimes include Docker and containerd.
Controller Plane:
- Refers to the combination of API Server, etcd, Controller Manager, and Scheduler.
Add-ons:
Additional components and services that add functionality to a Kubernetes cluster.
DNS:
- Provides DNS-based service discovery.
- Allows Pods to communicate with each other using names.
Dashboard:
- Web-based user interface for managing and monitoring Kubernetes clusters.
Ingress Controller:
- Manages external access to services in a cluster.
- Configures external access rules based on Ingress resources.
Metrics-Server:
- Exposes resource usage metrics for nodes and pods.
Kube-DNS (CoreDNS in newer versions):
- Provides DNS-based service discovery in Kubernetes clusters.
Container Network Interface (CNI):
- Specifies a standardized interface between container runtimes and network plugins.
These components work together to provide the necessary functionality for deploying, managing, and scaling containerized applications in a Kubernetes cluster. Each component plays a specific role in maintaining the desired state of the cluster and ensuring the smooth operation of containerized workloads.