Kubernetes aka K8s is container orchestration tool, which helps us to control our containers in the clusters. It is open source platform for managing containerized applications. Born in GOOGLE, written in GO/Golang. Donated to CNCF in 2014. Kubernetes v1.0 was released on July 21 2015. Current stable version in 1.14 and latest is 1.17.
K8S is not a replacement of docker (containerization tool) But K8S can be considered as replacement for Docker Swarm (docker inbuilt container orchestration), K8S is more complex than Swarm, and requires more work to deploy.
Responsibilities of k8S include container deployment, scaling & descaling of containers and container load balancing.
- Automated scheduling: k8S provides advanced scheduler to launch container on cluster nodes.
- Self-Healing of Containers: Rescheduling, replacing, restarting, the containers which are died.
- Automated rollouts &roll back: supports rollouts & rollbacks for the desired state of application.
- Horizontal scaling & Load balancing: can scaleup and scale down the application as per the requirements.
- Other features like service discovery, load balancing and storage orchestration.
When we talk about K8S it can be of two types self- managed and cloud managed K8S.
Self-managed: will put in a simple manner, which is managed by you, managed here includes right from installation of k8S to creation of clusters and administration of cluster to security of clusters entirely done by you only.
Cloud managed: now you will easily understand by name itself, which is managed by cloud providers like AZURE, AWS, GCP. In cloud managed, installation of clusters to its security & everything is managed by vendors itself, that means they are offering PaaS. In PaaS model you just have to use and consume the services and pay for what you have consumed, here you are not worrying about infra, concentrate on your application, rest will be take care by cloud itself. Different PaaS offerings are as follows:
AKS azure k8s service from MICROSOFT
EKS elastic k8s service from AMAZON
GKE google k8s engine from GOOGLE
When we look into the MICROSOFT product which is AKS they are lot of features available with this service like; Auto patching of NODES, Autoscaling of NODES, Auto patching of NODES, Self-Healing of NODES, and great integration with all azure services including AZURE DevOps (VSTS).why I’m stressing NODES because in self-managed k8s we are not managing the NODES at all; nodes is nothing but a VM or server; in Self-managed k8s we stopped at management of containers only what about nodes, what if a node in cluster has gone unhealthy or terminated while heavy traffic ,what about containers running inside it. So to check all the limitations of self-managed k8s, azure is offering a great service which is AKS , and next thing comes into our mind while going towards cloud is pricing, here is the brief about that, entire cluster management is FREE of COST ,pay only for what you have consumed for VMS .I’m not going to talk about other vendors and but when it comes to pricing other cloud providers are charging for cluster management also. Azure is offering one interesting service called Azure Dev spaces as an extension to AKS, it’s great because it will add more value in developing the application in clusters not only deployments. By this we can use AKS as a shared cluster and develop the application, it is an added extension for visual studio 2019 which helps the developers in making quick changes.