- A collection of Hands-on labs for Kubernetes (K8S).
- Each lab is a standalone lab and does not require to complete the previous labs.
- List of the labs in this repository:
📗 00-VerifyCluster
📗 01-Namespace
📗 02-Deployments-Imperative
📗 03-Deployments-Declarative
📗 04-Rollout
📗 05-Services
📗 06-DataStore
📗 07-nginx-Ingress
📗 08-Kustomization
📗 09-StatefulSet
📗 10-Istio
📗 11-CRD-Custom-Resource-Definition
📗 12-Wordpress-MySQL-PVC
📗 13-HelmChart
📗 14-Logging
📗 15-Prometheus-Grafana
📗 16-Affinity-Taint-Tolleration
📗 17-PodDisruptionBudgets-PDB
📗 18-ArgoCD
📗 19-CustomScheduler
📗 20-CronJob
📗 21-Auditing
📗 21-KubeAPI
📗 22-Rancher
📗 23-MetricServer
📗 24-HelmOperator
📗 25-kubebuilder
📗 26-k9s
📗 27-krew
📗 28-kubeapps
📗 29-kubeadm
📗 30-k9s
📘 Kubernetes-CLI-Tasks
📘 Kubernetes-Service-Tasks
- 01. Installing minikube
- 02. Start minikube
- 03. Check the minikube status
- 04. Verify that the cluster is up and running
- 05. Verify that you can "talk" to your cluster
- 01. Create Namespace
- 02. Setting the default Namespace for
kubectl - 03. Verify that you've updated the namespace
- 01. Create namespace
- 02. Deploy nginx using yaml file (declarative)
- 03. Verify that the deployment is created:
- 04. Check if the pods are running:
- 05. Update the yaml file with replica's value of 5
- 06. Update the deployment using
kubectl apply - 07. Scaling down with
kubectl scale
- 01. Create namespace
- 02. Create the desired deployment
- 03. Expose nginx as service
- 04. Verify that the pods and the service are running
- 05. Change the number of replicas to 3
- 06. Verify that now we have 3 replicas
- 07. Test the deployment
- 08. Deploy another version of nginx
- 09. Investigate rollout history:
- 10. Lets see what was changed during the previous updates:
- 11. Undo the version upgrade by rolling back and restoring previous version
- 12. Rolling Restart
- 01. Create namespace and clear previous data if there is any
- 02. Create the required resources for this hand-on
- 03. Expose the nginx with ClusterIP
- 04. Test the nginx with ClusterIP
- 05. Create NodePort
- 06. Create LoadBalancer (only if you are on real cloud)
- 01. Create namespace and clear previous data if there is any
- 02. Build the docker container
- 03. Using K8S deployment & Secrets/ConfigMap
- 04. Using Secrets & config maps
- 01. Create namespace and clear previous data if there is any
- 02. Create and test the Stateful application
- 03. Test the Stateful application
- 04. Scale down the StatefulSet and check that its down
- 05. Scale up again and verify that we still have the prevoius data
📗 10-Istio
- 01. Download latest Istio release (Linux)
- 01.01 Add the istioctl client to your path (Linux or macOS):
- 02. Deploy the demo application
📗 11-CRD-Custom-Resource-Definition
📗 16-Affinity-Taint-Tolleration
- 01. start minikube with Feature Gates
- 02. Check Node Pressure(s)
- 03. Create 3 Pods using 50 MB each.
- 04. Check MemoryPressure
- 01. Kubernetes Pod Workflow
- 02. Pod Debugging Challenge
- 03. Imperative to Declarative
- 04. Scaling Deployments
- 05. Rolling Updates and Rollbacks
- 06. ConfigMaps and Environment Variables
- 07. Secrets Management
- 08. Persistent Storage with PVCs
- 09. Multi-Container Pods
- 10. Jobs and CronJobs
- 11. Namespaces and Isolation
- 12. Resource Limits and Quotas
- 13. Liveness and Readiness Probes
- 14. Node Selection and Affinity

