
This video describes traditional virtualization in order to set the context for the discussion on containers
This video describes how namespaces are a fundamental building block for containers
This video explains how Cgroups form the basis for resource isolation in containers
This video describes different types of runtimes, and the functionality they provide
The pdf file in the resources outlines the steps for the exercises. These exercises need a ubuntu machine / VM
This video describes how to build container images, and the constituent image layers
This video describes how overlayfs is used to construct image layers, and the filesystems that container use
The pdf file contains the steps for the exercises, and the tarball contains the required files
This video gives an overview of the steps needed to install a Kubernetes cluster
The pdf file contains the steps to install a Kubernetes cluster
This video describes the pod resource
This video describes how pods talk to each other within a given node, and across nodes
Volumes are the storage abstraction in Kubernetes
This video describes the persistent volumes, and persistent volume claim resources
The pdf file contains the steps for the exercises, and the tarball contains the required files
This video gives an overview of the architecture, and describes the etcd component which provides the persistent storage for the Kubernetes objects
This video describes the API Server component of Kubernetes
This video describes the other components in the architecture such as the Scheduler, Controller Manager, etc.
This video describes the design principles which underpin the Kubernetes architecture
The pdf file contains the steps for the exercises, and the tarball contains the required files
This video describes the Service abstraction, and the networking required to implement a Service.
Services provide for access to applications across a network.
This video describes the networking required to implement a Service. Also, DNS which is provided as a service is described
This video describes what a CNI (Container Networking Interface) Plugin is, and describes the Calico plugin
The pdf file contains the steps for the exercises, and the tarball contains the files needed for the exercises
This video covers the ReplicaSet resource which provides for stateless replication
This video describes the Deployment resource which builds on the ReplicaSet to provide for upgrades, and rollback
This video describes the StatefulSet which provides for stateful replication of application
This video describes the DaemonSet resource
This video describes kubernetes resources that help in providing configuration, and secret keys/tokens to the application
This video describes the Probes resource which is used for monitoring the health of an application
The pdf file contains the steps for the exercises, and the tarball contains the files needed for the exercises
This video provides an overview of the application which is realised using multiple kubernetes resources. This application will illustrates many of the kubernetes resources discussed so far.
The pdf file contains the steps for the exercises, and the tarball contains the files needed for the exercises
This video describes the NodePort service using which clients external to a kubernetes cluster can access applications hosted in the cluster
This video describes the LoadBalancer service which can be implemented by a network load balancer component.
This video describes the ingress resource which can terminate SSL, and load balance based on the destination host or URL
This video describes an ingress controller resource. An ingress controller is responsible for implementing ingress rules
The pdf file contains the steps for the exercises, and the tarball contains the files needed for the exercises
This video describes the motivation for helm charts, and lays out the terms used in helm
This video describes the helm chart structure, and the helm architecture
This video describes an helm chart install, and uses lifecycle commands to update and rollback a deployment
This video introduces helm chart dependencies which enable one helm chart to use other charts
The pdf file contains the steps for the exercises, and the tarball contains the files needed for the exercises
Objective
Provides an introduction to Kubernetes technology - architecture, internals, deployment, and testing. At the end of the course, participants would have a good understanding of the technology, and would be able to
Transition their applications to Kubernetes
Evaluate Kubernetes distributions, CNI plugins
Evaluate tools in the Kubernetes ecosystem
All concepts are reinforced with hands-on exercises.
Infrastructure Requirements
Google Cloud based VMs (ubuntu 18.04) for each participant
2core/7.5 GB/100 GB - Nos: 1
1core/3.75GB/100GB - Nos: 3
Internet Access for the VMs
Account created on container registry such as quay io for storing container images
Participants need to take an account in the Google Cloud Platform (credit card needed), and provision the VMs. The Google cloud platform has a free plan which the participants can explore.
Course Structure
The course is structured as 16 modules with lecture videos and exercises, and the estimated completion time is 32 hours.
The course begins with lectures on containers, and container images as a good grasp of these technologies is essential for understanding Kubernetes. Virtualization, namespaces, cgroups, container runtimes, overlay filesystems, and container filesystems are covered. Next, we attempt to install a Kubernetes cluster on the Google Cloud platform using kubeadm, and explore Kubernetes resources for compute and storage - pods, and volumes.
The course then moves on to examine the Kubernetes architecture in detail such as the etcd, API server, scheduler, etc. We then take an in-depth look at the networking internals, and discuss how the Calico CNI plugin works. We then discuss advanced objects of Kubernetes which use pods, volumes and services as building blocks. These include deployments, statefulsets, daemonsets, configmaps, probes. Next, we install a sample web application using django and postgres onto Kubernetes to illustrate the various Kubernetes resources discussed so far.
Ingress and load balancer which is used by external clients to access applications is discussed next, and helm packaging is introduced. We then examine authentication, authorisation, and admission control which are important aspects for deployment of applications.
Network policy and service mesh (istio) are covered next and help in providing platform agnostic firewall type rules, and tools for managing microservice complexity. We then take a look at monitoring and logging which are critical for devops. Development tools such as skaffold that are needed to speed up the code, test, debug loop are covered next. Finally, we wrap-up the course and introduce operators and GitOps for further reading.
Non-Goals
Description of other Kubernetes installation tools such as kops, or of Kubernetes distributions - cloud or on-prem - is not provided.