Kubernetes 5 Free Learning resources.

If you don’t know docker read here.

Kubernetes(k8) is an orchestration platform to manage containers.

Kubernetes is the buzzword in the market because of the boom of containerization and microservices. We can have a microservices architecture with its pros and cons and plenty of containers but the question is how to manage those containers and the source of truth is K8.

Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.

It was originally designed by Google, and is now maintained by the Cloud Native Computing Foundation. It aims to provide a “platform for automating deployment, scaling, and operations of application containers across clusters of hosts”.

The definition is from the k8 official website. 

In this article, we will list down 5 free resources to which will help you to learn k8.

Kubernetes is a container orchestration software

  1. Learn K8 basics:- Learn Kubernetes Basics is the official documentation by the developers of Kubernetes. This tutorial will help you to understand the basics step by step guide of k8 cluster orchestration system. Each module contains some background information on major Kubernetes features and concepts and includes an interactive online tutorial. I think this the source of truth to start learning k8.
  2. Learning Path kubernetes:- This course can give us from Kubernetes basics to advanced networking and workloads. This tutorial series introduced by IBM and its very good resource to deep dive into k8. If you’re new to Kubernetes and container orchestration and want to begin learning about it, this learning path covers everything from basic prerequisites to more advanced skills needed for containerization. This course will give you brief the idea about a container up to advance k8 concepts. After completion of this course, you will be able to understand the basics of containers, build containerized applications and deploy them onto Kubernetes, understand the advantages of a deployment that uses Helm with Kubernetes, deploy various microservices with Kubernetes, understand basic networking for applications that are running in Kubernetes and much more.
  3. A Tutorial Introduction to Kubernetes:- A Tutorial Introduction to Kubernetes is provided by Ulaş Türkmen on his blog. In this tutorial series, you will learn how to use Kubernetes using Minikube, how to configure kubectl, understanding nodes and namespaces, how to use the dashboard, deploying various container images in order to demonstrate Kubernetes feature, running service, etc.
  4. Coursera K8:- Architecting with Google Kubernetes Engine Specialisation this is the course name. Actually, this course is design and developed by Google. In this k8 course you will learn, how to implement solutions using Google Kubernetes Engine, or GKE, including building, scheduling, load balancing, and monitoring workloads, as well as providing for the discovery of services, managing role-based access control and security, and providing persistent storage to these applications.
  5. Fundamentals of Containers, Kubernetes, and Red Hat OpenShift:- This course will provide you with an introduction to container and container orchestration technology using Docker, Kubernetes, and Red Hat OpenShift Container Platform. You will learn how to containerize applications and services, test them using Docker, and deploy them on a Kubernetes cluster using Red Hat OpenShift. Additionally, you will build and deploy an application from source code using the Source-to-Image facility of Red Hat OpenShift. After the completion of this course, you will be able to create containerized services, manage containers and container images, create custom container images and deploy containerized applications on Red Hat OpenShift.

Kubernetes — Explained Like You’re Five

Summary:- Modern applications are increasingly built using containers, microservices packaged with their dependencies and configurations. K8s is open-source orchestration software for deploying and managing those containers at scale. With K8s, you can build, deploy, deliver and scale containerized apps faster and smoother.

This is just a list of the sources from where we can start our journey and makes hands dirty. There is a more complete list of concepts available on the Kubernetes website. I suggest you give them a quick look if you want to get a better grasp of who does what and what goes where.

This is it, for now, please let me know if you know more resources which are very simple and effective.

Demystify Docker container technology!!

Demystify Docker container technology!!

For more stories.

Docker is containerization platform.

Nowadays, docker is a buzzword in the industry and docker has taken a major role in the application development workflow. There are many articles but this is not about what is docker? This article is more about behind the screen!! Why this is because last month I was working on AWS, for this purpose I have created one image (RHEL Linux distro). I have faced some issue so when I discuss with my colleague, He said your Image is not tunned. This is where I started exploring what is underneath for docker and come up with this conclusion.

Docker is more optimized and specifically tunned Linux kernel image.

Why Docker?

This image will give you a more clear picture than words. Why docker. Docker is more popular because of quick startup time. Docker is starting instantly and it will save time and efforts. How docker startup instantly? Let us understand this is below

Let us first understand the virtualization method.

  • Emulation
  • Hardware-Assisted Virtualization (Intel Virtualization Technology)
  • Paravirtualization(Xen Hypervisor)
  • FreeBSD Jails
  • Container-based virtualization

Virtualization is categorized based on how it mimics the hardware to guest OS(operating system).

Emulation:- If you are familiar with the emulator such as an android emulator or iOS emulator over your OS. Emulation is full virtualization runs the virtual machine OS kernel entirely in software. In below diagram hypervisor is the full virtualization. This is installed entirely on top of the host OS. The responsibility of this layer to convert for translating guest kernel code to host os instructions. This hypervisor is aka Type-2 hypervisor. The cons of this type are additional system resource overhead that leads to a decrease in performance compared to others. e.g QEMU, VirtualBox, VMware.

Hardware-Assisted Virtualization:- This is aks Intel Virtualization Technology. The idea is to trap execution calls and send them to the virtualization system as the goal is to have most calls run natively and only trap/VMM a small subset of calls.

Paravirtualization:- This is aka Type-1 hypervisor this runs directly on hardware or bare metal and provides the virtualization. The Xen hypervisor is like an operating system of operating systems. It helps the OS, the virtualized hardware, and the real hardware to collaborate to achieve optimal performance. These hypervisors typically have a rather small footprint and do not themselves, require extensive resources. e.g KVM.

FreeBSD Jails:- Ideally free BSD jails are very similar to the lxc container. This is called as other operating system level virtualization. FreeBSD Jails were first introduced in 2000, long way before LXC containers (introduced in 2008) or Docker (introduced in 2013) was released. FreeBSD jails are very similar to docker but its only be used on freeBSD. This is the disadvantage over docker.

Container-based virtualization:- This is aka operating system level virtualization. These runtimes are the platform-dependent parts of the containerization technology as opposed to the platform independent parts that deal with handling the images, etc. The OS level virtualization enables multiple isolated process executions within a single operating system kernel.

e.g LXC, libcontainer.

Container and docker is not a new technology this is the one distro of Linux kernel with limited resource

Let us see some Linux tech stack used in docker.

ulimit a command that lets you set a per-process limit on things like the number of open files.

chroot change the root filesystem. This is a very ancient feature inherited from BSD. This is like jailed inside the directory as its root file system unknown to the entire world.

cggroups process group resource limit. In 2008 Google engineers contributed an important feature to the Linux kernel. A process could be constrained to use their allocated resources. Linux distributions expose cgroups in their filesystem under /sys/fs/cgroup

namespaces This is really the most important contributor to container technology. The namespace will allow you to launch a different network stack for a certain process on.

Union file systemUnionfs is a filesystem service for Linux, FreeBSD & NetBSD which implements a union mount for other file systems. It allows files and directories of separate file systems, known as branches, to be transparently overlaid, forming a single coherent file system.

seccompProtecting the system calls Process level. This is the one-way docker providing security. This is how a process allowed to make which system call.

AppArmor and SELinuxMandatory access control system. This is protecting system calls at a system level.

Container runtimeThe two main container runtime is runc and rkt. runs used by docker.

When you are putting everything together within one bucket then the docker container will get the form.

This is what I know and I hope this will be helpful to you.

For more stories

Lets connect on Stackoverflow , LinkedIn , Facebook& Twitter.