Course Outline
Day 1 : Kubernetes basics
AM: Understanding Containers in Depth
Topics:
• What containers are and the benefits they provide
• How containers are constructed
• The differences between layers, images, and containers
• What does immutability really mean
• The core Linux functionalities that containers are based on
• How containers reuse code
• The differences between containers and VMs
• What Docker really does
• Storage drivers
• Overlay file systems
• Docker security
• The Open Container Initiative
• Kubernetes Container Runtime Interface
• Container engines - containerd and CRI-O
• Container runtimes - runC and dockerd
• Container CLI tools – Podman, Buildah, Kaniko
• What it really means that Kubernetes isn’t using Docker anymore
Hands-on labs:
Topics:
• Overview of Kubernetes and how it uses container images
• Architecture of a cluster
• Kubernetes command-line interface
• Major types of objects used in a cluster
• Basic YAML file format for specifying Kubernetes objects
• How deployments in Kubernetes work with replicas and pods
• Learning about connecting and interacting with Kubernetes through services, ports,
ingresses
• Managing secure and insecure information with secrets and configmaps
• How persistent storage works with Kubernetes
Hands-on labs
- Exploring and deploying into Kubernetes
- Working with services and ports
- Working with secrets and configmaps
- Working with persistent storage - persistent volumes and claims
Day 2 : Kubernetes Management
AM: Kubernetes Orchestration and Monitoring
Topics:
• What is Helm? Basic concepts and function. Helm charts
• Using custom values and functions in Helm charts
• What is Kustomize? Basic concepts and function. How does Kustomize differ from Helm?
• Working with variants, overlays, and bases to create different versions of K8s manifests
• Brief introduction to Kubernetes monitoring with Prometheus and Grafana
Hands-on labs
Working with Helm
Templating with Helm
Run a basic Kustomize example
Creating variants
Using Prometheus and Grafana to monitor your Kubernetes cluster and workloads
PM: Workload Scheduling and Management
Topics:
• Understanding Kubernetes liveness and readiness probes
• Defining and using Kubernetes Quotas
• Node affinity – requirements and preferences for scheduling pods
• Using taints to repel pods and tolerations to ignore taints
• How RBAC and security contexts work
Hands-on labs
Working with Kubernetes Probes
Working with Quotas
Scheduling and Nodes
Working with Taints and Tolerations
Working with Security Contexts and RBAC
Day 3: Diving Deep
AM: Troubleshooting and debugging applications running in Kubernetes
Topics:
• Most common types of startup errors – ErrImagePull, ImagePullBackOff, CrashLoopBackoff,
etc.
• Using Kubernetes events and watches to figure out what is going on
• What to do when your container crashes or fails
• Using the Kubernetes exec and debug commands
• Adding a debugging pod to your pod
• Starting your container with a different command to execute
• Using the set-image command to change the image running in your container
• Leveraging the Kubernetes exec command to understand what’s going on in a pod
• Troubleshooting services (DNS, network traffic, etc.)
Hands-on labs
Identify and remediate issues with system resources when trying to get pods scheduled
on nodes
Identify and remediate issues with getting scheduled on particular nodes and debug
and fix why a pod won’t start up
Troubleshoot failed containers within pods and how to spin up pods to debug them
Troubleshoot how to determine the problem(s) when your service isn’t accessible
PM: Creating a Kubernetes Operator to learn about controllers, custom resources, and
interacting with the Kubernetes API
Topics:
• The Kubernetes Operator Pattern
• What makes a good use case for an operator; what doesn’t
• What’s a custom resource (CR)?; How does it relate to a custom resource definition
(CRD)?
• Deep dive into the controller code; how to generate one and add custom logic to it for
the custom functions of your object
• The types of objects that are used in deploying an Operator; the key parts of the RBAC
setup
Hands-on labs
- Create an Operator with the Operator SDK
- Add and update custom resources
- Add the controller and custom logic
- Deploy the Kubernetes manifests and run the Operator