![]() |
Image credits to Dribble |
To understand in a simple way, we can say Kubernetes is an open source system to scale, deploy and manage containers. It automates operational tasks and has built-in commands for deploying applications, rolling back changes, scaling up and down your application as per requirements, and monitoring which makes managing applications easier.
Why Kubernetes?
Containers are a good way to bundle and run your application, but when these are deployed in large volumes then you need a centralized framework for running distributed systems resiliently ensuring minimum downtime.
Benefits of Kubernetes:
- Automation of day-to-day operations, rollouts, and rollbacks.
- Secret and Configuration Management - Kubernetes lets you store and manage sensitive information like passwords, SSH keys, and OAuth tokens. These can be deployed, changed, and managed without rebuildings container images.
- Self-healing - Kubernetes restarts containers that fail, replaces containers, and kills containers that do not respond to health checks.
- Handles storage, networking, and compute workloads.
- Continuous service health monitoring.
- Allows custom codes, APIs, and plugins.
Kubernetes vs Docker:
A lot of people get confused between these two, both are different yet complementary technologies for running containerized applications.
With docker, you can put all the things needed for the application to run in a container and then are spun when needed, but how do you manage started docker containers, that's what Kubernetes does. Kubernetes is responsible for carrying and delivering these containers safely to locations where they can be used.
People often say that they are alternatives which is incorrect, Kubernetes can be used with or without docker, the question is when you should and shouldn't use them together depending on the scale of application deployment.
Components in Kubernetes:
![]() |
Image Credit to Kubernetes |
When you deploy Kubernetes, you get a cluster.
A cluster consists of a set of working machines called nodes that run containerized applications. Every cluster has at least one worker node.
A pod is a set of containers that are running in your cluster.
The worker node(s) host the pods that are components of the application workload.
API Server
- Component of Kubernetes Control Plane that exposes the Kubernetes API.
- Front end for Kubernetes Control Plane
- Main Implementation is kube-apiserver - scale horizontally i.e deploys more instances.
- You can run several kube-apiserver and balance traffic between them.
- API Server is what you can call the brain of the cluster.
- In the Kubernetes world, etcd is used as the backend for service discovery and stores the cluster's state and its configuration.
- etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines
- kube-scheduler is the default scheduler for Kubernetes and runs as part of the control plane. kube-scheduler is designed so that, if you want and need to, you can write your own scheduling component and use that instead
- It manages various controllers in Kubernetes. Controllers are control loops that continuously watch the state of your cluster, then make or request changes where needed.
- The cloud controller manager lets you link your cluster into your cloud provider's API, and separates out the components that interact with that cloud platform from components that only interact with your cluster.
- An agent that runs on each node in the cluster. It makes sure that containers are running in a Pod.
- The kubelet doesn't manage containers which were not created by Kubernetes.
- kube-proxy maintains network rules on nodes. These network rules allow network communication to your Pods from network sessions inside or outside of your cluster.
Kubernetes Alternatives:-
- Docker Swarm
- Apache Mesos
- HashiCorp Nomad
- AWS Fargate
- Rancher
- Cloudify
What's Next?
What’s described above is an oversimplified version of Kubernetes, but it should give you the basics you need to start experimenting. Now that you understand the pieces that make up the system, it's time to deep dive into Appsec free Kubernetes course, the course also has a free lab to deploy and learn Kubernetes.
Thanks for reading!
Comments
Post a Comment