Kubernetes
Last updated
Last updated
Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications. It allows containers that make up an application to be grouped into logical units for easy management. Kubernetes provides orchestration and management capabilities for deploying containers at scale, facilitating the building of application services that span multiple containers, scheduling those containers across a cluster, scaling them, and managing their health over time. It is a portable, extensible platform that supports declarative configuration and automation and has a large and rapidly growing ecosystem.
Cluster: A cluster is a group of items or computers that are close together or networked together to function as a single system. Clusters can be used for high availability and load balancing in enterprise computing.
Nodes: A node is a logical collection of IT resources that runs workloads for one or more containers in a Kubernetes cluster. It contains the services necessary to run pods, which are group containers that communicate with control plan components, configure networking, and run assigned workloads. Each node can host one or multiple pods, and it can be a physical machine or virtual machine hosted on-premises or in the cloud. Nodes are managed by the control plane and automatically handle the scheduling of pods across the nodes in the cluster. They run an agent called kubelet, which enables the Kubernetes control plane to control the node.
PODS: A pod is the smallest deployable unit of computing. It is a group of one or more containers with shared storage and network resources and a specification for how to run the containers. Pods enable the sharing of data and communication among containers, providing a conducive environment for containers to operate in.
Kubernetes control-Plane: Is the set of components that manage and orchestrate the k8 cluster-
Kube API server 2. Etcd 3. Kube-scheduler 4. Kube-controller-manager 5. Cloud-controller-manager
Kube API server: The APIapi server is the front-end interface for the Kubernetes control plane that exposes Kubernetes API.
Etcd: Etcd is a distributed, reliable, and highly available key-value store used to store the configuration data for the k8 cluster.
The Kube Scheduler is the component responsible for assigning newly created pods to nodes within a cluster. It takes into consideration the pods' resource requirements, available resources on the nodes, and other scheduling requirements to efficiently allocate pods to available nodes.
The kube-controller-manager is responsible for running various controller processes that monitor the state of the cluster and make changes as necessary. It encompasses a set of controllers that handle different aspects of the cluster, such as node and replica management, endpoints, and services, among others.
A Kubernetes worker node is a physical or virtual machine that runs containerized applications and services. It includes the following:
Kubelet
Kube-Proxy
Container Runtime
Kubelet
The Kubelet is the primary agent running on each node, communicating with the master node. It is tasked with starting, stopping, and monitoring containers as directed by the master.
Kube-proxy - is responsible for managing network routing between pods and services in the cluster.
A container runtime is responsible for starting and stopping containers on a node, such as Docker.