Basics of Docker and Kubernetes | Kubernetes for .NET Developers Series ( 1st of 15 Posts)

Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery. “Kubernetes for .NET Developers” is a Series of 15 Blog posts.

  1. Basics of Docker and Kubernetes ( This Post )
  2. Container Terminologies
  3. Hands on with Docker
  4. Hands on with Kubernetes on Azure Kubernetes Service (AKS)
  5. Managing State in Kubernetes
  6. Design for Scale through Kubernetes
  7. Failure Handling in Kubernetes
  8. Deploying Hybrid Kubernetes Cluster
  9. Windows Container Orchestration in Kubernetes
  10. Developing Containerized .NET Application for AKS
  11. Deploying .NET Application to AKS
  12. Monitoring Kubernetes Clusters
  13. Security Considerations in AKS
  14. Azure Server less offering for Containerized Applications.
  15. Production Guidelines for running Kubernetes

Basics of Docker and Kubernetes

As per official Kubernetes itself

  1. Kubernetes is designed on the same principles that allows Google to run billions of containers a week, Kubernetes can scale without increasing your ops team.
  2. Whether testing locally or running a global enterprise, Kubernetes flexibility grows with you to deliver your applications consistently and easily no matter how complex your need is.
  3. Kubernetes is open source giving you the freedom to take advantage of on-premises, hybrid, or public cloud infrastructure, letting you effortlessly move workloads to where it matters to you.

Kubernetes has become the most popular container orchestration engine. Since its launch in 2014, it has gained so much of ground. It has been adopted by start-ups as well as fortune 500 companies, and by all the major public cloud vendors. Now AWS, Azure , GCP , Alibaba , IBM all of them offers their Managed Kubernetes Offerings in various flavors.

With the introduction of Windows containers in Kubernetes, now you can completely leverage the flexibility and robustness of the Kubernetes container orchestration system in the Windows ecosystem. This support has helped .NET developers to create new Windows applications and migrate existing ones to the cloud-native stack with the same ease as for Linux-oriented cloud native applications.

Docker containers work on simple concept of process isolation and chroot jails, where the process is running in an isolated root directory. Containerization has witnessed quick evolution and became a mainstream technology in the 2010s with the advent of Linux Containers (LXC) and Docker. Main job of Docker Engine is to providing a basic runtime for containers by abstracting container management, and exposing functionalities using the REST API to the client layers for example Docker CLI.

The architecture of Docker Engine on Linux

Why there is need of Docker or any other Container Technology ?

Nowadays, a microservices architecture is default choice when developing distributed systems. Microservices oriented architecture consists of a group of services that work together to form the system, so that individual services themselves can be built, tested, deployed, and scaled independently from each other without impacting other microservices.

What Are Microservices?

Microservices are independently deployable standalone services modeled around a specific business domain. Microservices communicate with each other via network calls. A microservice architecture is based on multiple collaborating microservices.

Most important aspect of a microservices architecture is that each individual service serves one and only one main functionality. Each service serves a single bounded business function inside a bounded context.

Read More about Bounded Context here : https://martinfowler.com/bliki/BoundedContext.html

Different services work together to form the complete application. Those services work together over network communication, commonly using HTTP REST APIs or gRPC.

This architectural approach is commonly adopted by applications those are using Docker and Kubernetes. Docker is used as the packaging format for microservice, while Kubernetes is the orchestrator that deploys and manages the different services running together to manage the lifecycle of those microservices running on containers.

Read More about Microservices here : https://microservices.io/

In Next post we will read more about Container Terminologies.

  1. Basics of Docker and Kubernetes (This Post)
  2. Container Terminologies ( Next Post )
  3. Hands on with Docker
  4. Hands on with Kubernetes on Azure Kubernetes Service (AKS)
  5. Managing State in Kubernetes
  6. Design for Scale through Kubernetes
  7. Failure Handling in Kubernetes
  8. Deploying Hybrid Kubernetes Cluster
  9. Windows Container Orchestration in Kubernetes
  10. Developing Containerized .NET Application for AKS
  11. Deploying .NET Application to AKS
  12. Monitoring Kubernetes Clusters
  13. Security Considerations in AKS
  14. Azure Server less offering for Containerized Applications.
  15. Production Guidelines for running Kubernetes