Advanced Deployment Lab
This workshop provides a comprehensive exploration of how Kubernetes manages pod lifecycle, from initial scheduling through eviction, and how container images are distributed across your cluster. You will learn the mechanisms that control where pods run, when they are moved or terminated, and how to configure your cluster for optimal performance and reliability.
If you prefer not to install oc, kubectl, helm, istioctl, and related tools on your laptop, run the workshop CLI tools image on the cluster. You do not need a local oc client: apply the manifest from the web console (see below). An interactive bash session prints a short list of bundled tools when the shell starts (for example after opening Terminal on the pod and running bash or bash -l if the default shell is sh).
The image build copies the showroom Helm chart into ~/chart so you can run helm upgrade --install from the pod without cloning the git repository; use --set tools.enabled=false when installing from this pod so the chart does not start a second tools Deployment.
Default image (change the tag to match your deployed showroom chart or offline bundle):
ghcr.io/shpwrck/openshift-102-tools:latest
To apply the workload without a local oc client:
-
In the OpenShift console, select your Project.
-
Click + in the top bar, then Import YAML.
-
Paste the manifest below, adjust the
image:line if you mirror images, then click Create. -
Go to Workloads → Deployments → openshift-102-workshop-tools, open the Pods tab, select the running pod, then Terminal (or Actions → Debug pod). Run
bashorbash -lif you need the interactive bash banner.
The same manifest lives in the repository as deploy/openshift-102-tools-deployment.yaml and is shipped in the offline release tarball.
apiVersion: apps/v1
kind: Deployment
metadata:
name: openshift-102-workshop-tools
labels:
app.kubernetes.io/name: openshift-102-workshop-tools
app.kubernetes.io/part-of: openshift-102-workshop
spec:
replicas: 1
revisionHistoryLimit: 2
selector:
matchLabels:
app.kubernetes.io/name: openshift-102-workshop-tools
template:
metadata:
labels:
app.kubernetes.io/name: openshift-102-workshop-tools
spec:
containers:
- name: tools
image: "ghcr.io/shpwrck/openshift-102-tools:latest"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
cpu: "1"
memory: 512Mi
The container image CMD keeps the process alive (sleep via the image entrypoint) so the pod stays running until you delete the Deployment. The image includes a small docker CLI shim for Helm OCI exercises (no Docker Engine); manifest operations use skopeo under the hood. For disconnected clusters, mirror the tools image and UBI base listed in the release tarball TOOLS.md and images-mirror.txt.
Overview
The Advanced Deployment Lab covers four critical areas of Kubernetes operations:
-
Module 1 - Pod Scheduling Fundamentals: Understanding the Kubernetes scheduling process, including the filtering and scoring phases, and how to use secondary scheduler operators for specialized workload requirements.
-
Module 2 - Advanced Pod Scheduling: Learning advanced scheduling mechanisms including node affinity, taints and tolerations, Node Feature Discovery, pod affinity and anti-affinity, topology spread constraints with skew values, resource requirements, and pod priority with preemption.
-
Module 3 - Pod Descheduling and Scaling: Exploring descheduling strategies, horizontal pod autoscaling (HPA), vertical pod autoscaling (VPA), and how these components interact with each other.
-
Module 4 - Image Distribution and Optimization: Understanding image pull policies, image placement strategies, lean base images, and the Image Puller operator for optimizing image distribution across your cluster.
Prerequisites
This workshop assumes the following:
-
Basic understanding of Kubernetes concepts (pods, nodes, namespaces)
-
Familiarity with YAML configuration files
-
Access to a Kubernetes cluster (version 1.20 or later recommended)
-
Command-line experience with
oc -
Understanding of container images and registries
If you are new to Kubernetes, we recommend reviewing the Kubernetes Concepts documentation before proceeding.
Learning Objectives
After completing this workshop, you will be able to:
-
Understand the Kubernetes scheduling process, including filtering and scoring phases
-
Configure and use secondary scheduler operators for specialized workloads
-
Apply advanced scheduling mechanisms: node affinity, taints/tolerations, and topology spread constraints
-
Leverage Node Feature Discovery labels for hardware-aware scheduling
-
Configure pod priority classes and understand preemption behavior
-
Understand pod descheduling strategies and the Descheduler Operator
-
Configure horizontal and vertical pod autoscaling
-
Recognize how HPA, VPA, and Descheduler can interact and potentially conflict
-
Optimize image distribution strategies using image pull policies and the Image Puller operator
-
Choose appropriate base images and understand their impact on deployment performance
-
Diagnose and resolve scheduling failures
-
Implement best practices for pod scheduling, scaling, and resource management