Introduction to Container Orchestration technology (K8s)

Kubernetes (K8s)

Kubernetes also known as K8s was developed by Google based on maintaining their application container in production. Kubernetes is now opensource and one of the best container orchestration technology. We need to understand about the Container and Orchestration to understand about Kubernetes.

Container + Orchestration = Kubernetes

What is Container?

A Container is a standard unit of software packages up code and all its dependencies, so the application runs quickly and reliably from one computing environment to another. Docker is the container based, industry best software. Docker container is lightweight, standalone, executable package of software that includes everything needed to run an application such as code, runtime, system tools, system libraries and settings.

Docker Containerized Applications

Container images become containers at runtime and in the case of Docker containers, image become container when they run on Docker Engine. Docker container that runs on Docker Engine,

  1. Standard: Docker created the industry standards for Containers, so they could be portable anywhere.
  2. Lightweight: Containers share the machine OS system kernel, so does not require OS per application.
  3. Secure: Docker provides the strongest default isolation capabilities in the industry and applications are safer in containers.

What is Docker Engine?

Docker Engine is the industry’s actual container runtime that runs on various Linux and Windows Server Operating system. Docker engine enables containerized applications to run anywhere consistently on any infrastructure. This reduces the dependency hell for developer and operation teams.

Docker Engine

Why do we need Docker Containers?

As shown in the below diagram, there could be the dependencies between applications and its underlying software which is using to run. There could be many chances of raising problems with infrastructural and dependencies issues.

Dependency without Docker support

That’s where docker helps us to containerize each and every application into individual containers. Each individual container contains its dependent code, dependencies, system configurations, etc. So, they run any where.

Dependency with Docker support

If you observed the difference between above two images, image without Docker shown the common library and dependencies which is shared across multiple applications. Image with Docker will clearly shows that each individual docker container contains it’s libraries and Dependencies. So, with docker there is not chance of getting the problems related to libraries and dependencies and there is no chance of saying it works in my machine.

What is Container Orchestration?

Automatically managing and scaling (increasing or decreasing) container instances dynamically based on the load is called as Container Orchestration.

Container Orchestration Overview Diagram

Container Orchestration Technologies:

Kubernetes is one of the most popular Docker Container Orchestration technologies.

  1. Docker Swarm is from Docker and its easy to setup and start but not up to the mark to support large scale applications.
  2. Kubernetes is from Google and it is bit difficult to setup but supports lot of options to customize and support deployments. Kubernetes project is one of the top ranked project in GitHub.
  3. MESOS is from Apache and is bit difficult to setup but supports many advanced features.
Container Orchestration Technologies

Introduction to OpenShift by Red Hat

OpenShift by Red Hat and acquired by IBM

Red Hat OpenShift is Kubernetes(K8s) platform that provides trusted foundation on premises, hybrid and multi cloud deployments with automated operations and streamlined lifecycle management. Red hat OpenShift empowers the development teams to build and deploy their applications and helps operations team to provision, manage and scale in K8s application platform.

Developer teams has access to validated images and solutions from 100 of partners like security and scanning throughout the delivery process. Developers can access native images and wide range of 3rd party cloud services all through a single platform.

Operation teams can deploy applications wherever they want and across teams with built-in login and monitoring. Service mesh helps to enable communication between two or more different services.

OpenShift is Red Hat opensource platform to develop and host Enterprise grade Container based applications of the various Cloud computing models such as,

  1. Infrastructure as a Service (IaaS)
  2. Platform as a Service (PaaS)
  3. Software as a Service (SaaS)

OpenShift is Platform as a Service offering by Red Hat. Once deployed OpenShift takes care of managing the underlying infrastructure components. So, developers can concentrate only application development.

Flavors of OpenShift:

Types offered by OpenShift

OpenShift available in 4 flavors,

  1. OpenShift Origin is based on top of Docker containers and the Kubernetes cluster manager, with added developer and operational centric tools that enable rapid application development, deployment and lifecycle management.
  2. OpenShift Online is Red Hat’s public cloud application deployment and hosting platform. Get on-demand access to OpenShift to build, deploy and manage scalable containerized applications, operated and supported by Red Hat.
  3. OpenShift Dedicated is a container application platform hosted on Amazon Web Services (AWS) or Google Cloud Platform and managed by Red Hat. OpenShift Dedicated is built on Red Hat Enterprise Linux, Docker container technology, and Google Kubernetes for orchestration and management.
  4. OpenShift Enterprise/Container Platform is an enterprise-ready Kubernetes container platform with full-stack automated operations to manage hybrid cloud and multi-cloud deployments. Red Hat OpenShift is optimized to improve developer productivity and promote innovation.

As shown in the above image, we need to understand Docker, Kubernetes and related tools to understand better about OpenShift.

Docker: Docker is the fundamental technology that powers the development of containerized applications in the form of reusable images. Docker enables us to create an image with all prerequisite dependencies of an application. These images can be deployed in any environment.

Kubernetes: Powers deployment and management of Docker images across large clusters by providing self-healing and autoscaling features.

Note: OpenShift built on these technologies by providing the layer of tools that abstract the underlying Kubernetes and infrastructure management tasks to help developers to easily deploy and manage their applications on the Kubernetes based infrastructure.

Docker Container

Objective of this article to explain about Docker Container and why do we need to use them.

What is Docker Container?

A Container is a standard unit of software packages up code and all its dependencies, so the application runs quickly and reliably from one computing environment to another. Docker is the container based, industry best software. Docker container is lightweight, standalone, executable package of software that includes everything needed to run an application such as code, runtime, system tools, system libraries and settings.

Container images become containers at runtime and in the case of Docker containers, image become container when they run on Docker Engine. Docker container that runs on Docker Engine,
Standard: Docker created the industry standards for Containers, so they could be portable anywhere.
Lightweight: Containers share the machine OS system kernel, so does not require OS per application.
Secure: Docker provides the strongest default isolation capabilities in the industry and applications are safer in containers.

Why do we need to use Docker Container?

As shown in the below diagram, there could be the dependencies between applications and its underlying software which is using to run. There could be many chances of raising problems with infrastructural and dependencies issues.

Application dependencies without Docker support

That’s where docker helps us to containerize each and every application into individual containers. Each individual container contains its dependent code, dependencies, system configurations, etc. So, they run any where.

Application dependencies with Docker support

If you observed the difference between above two images, image without Docker shown the common library and dependencies which is shared across multiple applications. Image with Docker will clearly shows that each individual docker container contains it’s libraries and Dependencies. So, with docker there is not chance of getting the problems related to libraries and dependencies and there is no chance of saying it works in my machine.