Get introduced to Kubernetes—what it is and why it is needed.
- [Narrator] So you have decided to learn about Kubernetes, but what is Kubernetes? Why is it even required? In order to learn that, we need to learn a little bit of background on containers to help us set the context. Let's start with that first, and then we'll explain why and what of Kubernetes. A container is a light weight, stand alone, executable package of software that includes everything needed to run an application. Code, run-time, system tools, libraries, and settings, an application and all its dependencies are packaged together so that it can run reliably across multiple computing environments.
This helps reduce impedance mismatch between development, testing, staging, and production environment. An application typically consists of multiple containers such as one for the application code, another for web-cell work, another for messaging, for caching and so on. An application with multiple containers is a relatively easy to manage on a single machine. But clearly, when only a single instance of each container is running. This is good during development phase of the application, but in production you want to run this application using multiple containers over multiple machines.
This avoids a single point of failure. This makes your application highly available in case a single container or a single machine goes down. In order to manage these multiple containers on multiple machines, you need a container orchestrator. First, you need a system that can manage this cluster of machines. That can perform health checks on the machine, bounce them if they go down, allow the cluster size to grow up and down, this is your cluster manager.
Now that you have a large number of machines in the cluster, you also need a scheduler that will schedule the containers on the right machines. This will insure that containers can be scheduled on the right machine to meet the requirements listed by the container, such as CPU and memory. This will insure that any containers that may go down can be brought up again. This is your scheduler. There are many other purposes of container orchestrator, but these two are the primary ones. There are several container orchestrators available.
To start with, there is Docker Enterprises Edition from Docker, Inc., the company behind making the container technology accessible to everybody. Mesosphere DC/OS that is built on top of Apache Mesos, and provides an integrated platform for data and containers. Amazon Elastic Container Service or ECS, that is a managed service on the AWS Cloud, and allows to run and scale containerized applications on AWS without any inflation.
Kubernetes is such an open- source container orchestrator that automates deployment, scaling, and management of containerized applications. This is also commonly called as k8s, or kates in short, where the number eight indicates the number of letters between K and S. So what is Kubernetes? Kubernetes is an open-source container orchestrator. Because it's open-source, it can run on desktop, on-prem, and in the cloud. This allows you to migrate your work load across this different environments very easily.
Kubernetes is a CNCF project. CNCF is Cloud Native Computing Foundation and is a vendor neutral body that defines how Cloud Native applications can be built. Kubernetes is one of the projects there, and there are many other projects, such as Prometheus, Envoy, and Containerd.
- Packaging applications using Docker
- Building a Docker image with a Dockerfile and Jib
- Defining Kubernetes clusters
- Deploying with standalone manifests
- Deploying with Helm charts
- Deploying a Kubernetes cluster on AWS
- Adding an Istio service mesh
- Shifting traffic with Istio
- Creating a deployment pipeline