Kubernetes, also known as K8s for short, is an open-source system for automating the deployment, scaling, and management of containerized applications.
Open-source: Anyone can use and contribute to it, making it a popular choice for many organizations.
Container orchestration: It groups containers (which are essentially miniaturized applications) into logical units for easy management and discovery.
Automated: It takes care of tasks like deploying new versions of your application, scaling it up or down based on demand, and restarting crashed containers.
4. Increased Usage of Containers
● According to the Annual Flexera State of the Cloud Report from 2021, 53% of
companies use Docker containers.
● Gartner's analysts predict that by 2022, more than 75% of global
organizations running containerized applications
8. Kubernetes Popularity
● According to the 2022 CNCF Cloud Native Landscape Survey, over 69% of
organizations are using Kubernetes in production,
● The number was 58% in 2021 and 30% in 2018.
9.
10. Facts about Kubernetes Popularity
● World's leading technology companies, such as Amazon, Google, and
Microsoft, are using Kubernetes to deploy their applications.
● Over 50% of Fortune 100 companies are using Kubernetes in production.
● Kubernetes has a commanding 92% market share among container
orchestration tools
● There are now over 3.9 million developers worldwide who use Kubernetes.
13. Master Node
● API Server: Entry point for interacting with the cluster.
● Etcd: Stores the cluster's desired state configuration and current state data.
● Scheduler: Selects the most suitable node for each pod based on various
factors like resource availability and pod requirements.
● Controller Manager: Maintains the desired state of the cluster by running
various controllers that manage deployments, replica sets, nodes, and more.
14. Facts about Master Node
● It can be compared to the control plane or the brain of the cluster.
● It is a single point of control for managing the entire cluster, simplifying
administration and configuration.
● It continuously comparing the current state with the desired state
● It automates tasks like scheduling, scaling, and healing, reducing manual
intervention and improving efficiency
● It uses less resources than worker nodes
● It recommended to have more than one master node on production
15. Worker Nodes
● Kubelet: An agent that runs on each worker node. Manages pod lifecycle
events (start, stop, restart)
● Container Runtime: Directly on the worker node's operating system and
handles container lifecycles
● kube-proxy: Manages pod networking. Routes traffic to pods based on
service definitions.
16. Facts about Worker Nodes
● They are the workhorses of the cluster.
● If master node is the brain then worker nodes are the muscles, executing the
work.
● The performance of the applications directly depends on the capabilities of
the worker nodes.
18. Pods & Containers
● A pod is the fundamental unit for deploying and managing applications
● It's like a little pod of peas, where each pea represents a container
● All the containers in a pod share the same storage and network resources
● Kubernetes treats the entire pod as a single unit
● Pods are ephemeral
19. Deployments
● A deployment is a Kubernetes object that specifies the desired state of your
application, including:
○ The container image to use.
○ The number of replicas (instances) to run.
○ Resource requests and limits for each container.
○ Environment variables and other configuration.
● Deployments are commonly used for stateless applications
● Deployments manage ReplicaSets
● Kubernetes ensures that the actual state of your application converges to the
desired state you defined
22. Horizontal Scaling
● Increases or decreases the number of pod replicas (instances) running your
application
● Suitable for stateless applications with predictable resource demands
Methods:
● Horizontal Pod Autoscaler (HPA): Automatically scales pods based on CPU,
memory, or custom metrics.
● Manual Scaling: You manually adjust the number of pod replicas as needed.
23. Vertical Scaling
● Increases or decreases the resources allocated to individual pods.
● Useful for stateful applications or those with fluctuating resource needs.
Methods:
● Vertical Pod Autoscaler (VPA): Automatically adjusts CPU and memory
requests/limits for pods based on their usage.
● Manual Scaling: You manually adjust pod resource requests/limits.