Kubernetes or k8s is a portable, extensible, and open-source platform used in the management of containerized workloads and services while facilitating automation and declarative configuration. Kubernetes clusters run on-premise, private or public clouds.
Kubernetes, which is Greek for ‘Pilot or helmsman’, was developed earlier by Google, and eliminated the traditional methods of running applications on physical servers. After this era ended, came the era of virtualization (still widely used) which allows organizations to run applications in ways that boosted scalability and performance. Containerization is almost similar to virtualization but is considered lightweight.
- Multiple host container orchestration
- Declarative service management
- Instant scaling of containerized applications and resources
- Easy rollbacks and canary deployment execution
- Load balancing and horizontal scaling
- Provides self-healing functionality
- Resources consumption control
- Control and updates and deployment automation
Important Kubernetes Terminology
Pods. Refers to the smallest Kubernetes object.
Cluster/Nodes. Worker machines running containerized applications.
Control panel. An interface that helps users deploy, configure, and manage containers.
Kubelet. An agent ensuring that each container runs in a pod.
Controller manager. Component that monitors cluster state and makes/requests changes needed to achieve desired objectives.
API Server (Kube-apiserver). Control panel components exposing Kubernetes API.
Kube-Proxy. Networks proxy running in every node and is responsible for service concept implementation.
Workload. Application that is active on Kubernetes.
How It Works
A cluster (Fully functioning Kubernetes deployment) has two major components; the Compute machines/nodes and the control panel. Each machine can be virtual or physical and runs pods, which are inclusive of nodes. (Please refer to the terminology section to understand the concept).
The control panel is the mind of the operation and manages the cluster to achieve desired states including what applications run and containers to be used in the process.
Kubernetes operates above operating systems such as Linux and interacts with container pods that run on nodes. The administrator is in charge of issuing commands through the control panel, which automatically decides on nodes that are suitable for the task at hand. This results in the allocation of resources and pods in the node required to accomplish the requested task.
Advantages of Using Kubernetes
- Elimination of risks associated with vendor lock-in
- Has a large and active community
- Kubernetes is multiplatform as it can run in Public clouds, Bare metal, Open Stack, and many others.
- Service pods are easy to organize
- Improved productivity
- Offers diverse storage options
- Immutable infrastructure principles are adhered to
- Migration to Kubernetes can be complicated
- Crafting effective security blueprints is difficult when using Kubernetes
- Expensive compared to its alternatives
- Complexity runs in the Kubernetes ecosystem