Introduction of Kubernetes and What is Kubernetes?

Kubernetes Introduction

We have seen so far in Docker chapter that we can create images and run containers on the docker host. That is so cool its lightweight, fast and shippable but what about production. Can we run our applications on those lightweight containers or ask you more specifically running all those containers on one host? The answer is it’s not safe to put all your eggs in one basket.
So, we need a cluster of docker hosts, which can be managed by some external application. Something that can schedule containers for us on the best suitable host in the cluster. It should also detect a failed container and fix the problem for us. So, we are looking for a Docker orchestration tool
Docker Orchestration
We have few docker orchestration tools and cloud services in the market as listed below.

Amazon ECS -- The Amazon EC2 Container Service (ECS) supports Docker containers and lets you run applications on a managed cluster of Amazon EC2 instances.
Azure Container Service (ACS) -- ACS lets you create a cluster of virtual machines that act as container hosts along with master machines that are used to manage your application containers.
Cloud Foundry’s Diego -- Diego is a content management system that combines a scheduler, runner, and health manager. It is a rewrite of the Cloud Foundry runtime.
CoreOS Fleet -- Fleet is a container management tool that lets you deploy Docker containers on hosts in a cluster as well as distribute services across a cluster.
Docker Swarm -- Docker Swarm provides native clustering functionality for Docker containers, which lets you turn a group of Docker engines into a single, virtual Docker engine.
Google Container Engine -- Google Container Engine, which is built on Kubernetes, lets you run Docker containers on the Google Cloud platform. It schedules containers into the cluster and manages them based on user-defined requirements.
Kubernetes -- Kubernetes is an orchestration system for Docker containers. It handles scheduling and manages workloads based on user-defined parameters.
Mesosphere Marathon -- Marathon is a container orchestration framework for Apache Mesos that is designed to launch long-running applications. It offers key features for running applications in a clustered environment.

Why Kubernetes?

Among all of them, we are focussing on Kubernetes in this tutorial because of below-mentioned reasons
• Kubernetes is Google's own project which they used to manage containers from past 10 years. So, huge applications experience and mature model is something we look for productions.
• Kubernetes is ranked among the best Container Orchestration tool in the market as per the survey.
• It supports other container platforms apart from docker like RKT.
• Kubernetes is an open source project, its distinct from other “vendor-driven” project like Swarm, Mesos, CloudFoundry. Docker swarn is also open source but its tightly integrated with other Docker tools.
• It can support a large number of applications. This has been a talking point for the Kubernetes community since the spring when it announced the tool could run more than 1,000 nodes.
That’s does not mean that other orchestration tools are not as good as Kubernetes but we just wanted to try first the best among them and then we can try others if there are any shortcomings with Kubernetes.

What is Kubernetes?

Ansible can control a large number of servers and eases administration and operations tasks. Ansible can do simple configuration management and complex orchestration, it has all the features that config tools have plus it’s very easy to learn and implement. It communicates over normal SSH channels in order to retrieve information from remote machines, issue commands, and copy files. For windows node it uses winrm.
As Per Kubernetes Documentation:
Kubernetes is an open-source platform for automating deployment, scaling, and operations of application containers across clusters of hosts, providing container-centric infrastructure.
With Kubernetes, you can quickly and efficiently respond to customer demand:
• Deploy your applications quickly and predictably.
• Scale your applications on the fly.
• Roll out new features seamlessly.
• Limit hardware usage to required resources only.
Kubernetes goal is to foster an ecosystem of components and tools that relieve the burden of running applications in public and private clouds.
Kubernetes is:
• Portable: public, private, hybrid, multi-cloud
• Extensible: modular, pluggable, hookable, composable
• Self-healing: auto-placement, auto-restart, auto-replication, auto-scaling
Google started the Kubernetes project in 2014. Kubernetes builds upon a decade and a half of experience that Google has with running production workloads at scale, combined with best-of-breed ideas and practices from the community.
What Kubernetes can do?
At a minimum, Kubernetes can schedule and run application containers on clusters of physical or virtual machines. Kubernetes provides the infrastructure to build a truly container-centric development environment.
Kubernetes satisfies a number of common needs of applications running in production, such as:
• Co-locating helper processes, facilitating composite applications and preserving the one-application-per-container model
• Mounting storage systems
• Distributing secrets
• Checking application health
• Replicating application instances
• Using Horizontal Pod Autoscaling
• Naming and discovering
• Balancing loads
• Rolling updates
• Monitoring resources
• Accessing and ingesting logs
• Debugging applications
• Providing authentication and authorization

For more information about Visualpath, visit www.visualpath.in and follow the company on Facebook and Twitter.

Comments