Get Started with Kubernetes | Ultimate Hands-on Labs and Tutorials
A Curated List of Kubernetes Labs and Tutorials
- A $0 Learning Platform for All Levels - from the ground Up
- Over 500+ Highly Interactive Docker Tutorials and Guides
- Well tested on Kubernetes Cluster and can be run on Browser (no Infrastructure required)
π Join our Community
- Join 8400+ DevOps Engineers today via Community Slack
- Join our Discord Server
- Fork, Contribute & Share via Kubelabs GITHUB Repository
- Click and Follow us over Twitter
Pre-requisite:
Preparing 5-Node Kubernetes Cluster
PWK:
- Preparing 5-Node Kubernetes Cluster
- Setting up WeaveScope For Visualization on Kubernetes
- Running Portainer on 5 Node Kubernetes Cluster
GKE
Docker Desktop for Mac
Ubuntu
Using Kubectl
- Kubectl for Docker Beginners
- Accessing Kubernetes API
- How to know if Kubernetes is using Docker or Containerd as a runtime
Kubernetes CRUD
Using AI
Pods101
- Introductory Slides
- Deploying Your First Nginx Pod
- Viewing Your Pod
- Where is your Pod running on?
- Pod Output in JSON
- Executing Commands against Pod
- Terminating a Pod
- Adding a 2nd container to a Pod
- Labels and Selectors in a Pod
Kubernetes Tools for Pods
ReplicaSet101
- Introductory Slides
- Creating Your First ReplicaSet - 4 Pods serving Nginx
- Removing a Pod from ReplicaSet
- Scaling & Autoscaling a ReplicaSet
- Best Practices
- Deleting ReplicaSets
Deployment101
- Introductory Slides
- Creating Your First Deployment
- Checking the list of application deployment
- Scale up/down application deployment
- Scaling the service to 2 Replicas
- Perform rolling updates to application deployment
- Rollback updates to application deployment
- Cleaning Up
Scheduler101
- How Kubernetes Selects the Right node?
- Node Affinity
- Anti-Node Affinity
- Nodes taints and tolerations
Services101
- Introductory Slides
- Deploy a Kubernetes Service?
- Labels and Selectors
- Service Exposing More Than One Port
- Kubernetes Service Without Pods?
- Service Discovery
- Connectivity Methods
- Headless Service In Kubernetes?
StatefulSets101
- The difference between a Statefulset and a Deployment
- Deploying a Stateful Application Using Kubernetes Statefulset?
- Deploying NFS Server
- Deploying PV
- Deploying PVC
- Using Volume
- Recreate Pod
DaemonSet101
- Why DaemonSets in Kubernetes?
- Creating your first DeamonSet Deployment
- Restrict DaemonSets To Run On Specific Nodes
- How To Reach a DaemonSet Pod
Jobs101
Ingress101
RBAC101
- Role-Based Access Control (RBAC) Overview
- Creating a Kubernetes User Account Using X509 Client Certificate
Service Catalog101
- What is Kubernetes Service Catalog?
- Creating a sample Service Catalog
- Installing Service Catalog Helm Chart
Cluster Networking101
- What Is Cluster Networking In Kubernetes Sense?
- Kubernetes Networking Rules
- Types of Networks
- What is a Container Network Interface (CNI)?
- LAB- Weave Net Implementation
Network Policies101
- What is a Kubernetes Network Policy?
- Creating Your First NetworkPolicy Definition
- How can we fine-tune Network Policy using selectors?
- Deny Ingress Traffic That Has No Rules
- Deny Egress Traffic That Has No Rules
- Allow All Ingress Traffic Exclusively
- Allow All Egress Traffic Exclusively
Monitoring101
- Monitoring in Kubernetes
- Core Monitoring Pipeline
- Services Monitoring Pipeline
- What should you consider in Kubernetes Services Pipeline?
- What about Metrics Visualization?
- Changes To Watch For
Logging101
Helm101
- What is Helm?
- Installing a Helm Chart
- Helm Charts
- Helm Chart Hooks
- Helm Chart Testing
- Helm Chart Repository
AKS101
Security101
GitOps101
Managed Kubernetes Service
EKS101
LKE101
GKE101
Loft101
Shipa101
DevSpace101
Kubernetes with GitLab 101
Kubernetes with Jenkins
Strimzi (Kafka on Kubernetes)
Java client for Kubernetes
For Node Developers
Cheat Sheets
Contributors
- Ajeet Singh Raina
- Sangam Biradar
- Mewantha Bandara
- Rachit Mehrotra
- Saiyam Pathak
- Divyajeet Singh
- Apurva Bhandari
Workshop Video
Contribution Guidelines
Step 1. Clone the repository
git clone https://github.com/collabnix/kubelabs
Step 2. Add _config_dev.yml
Add the following entry for local access
url: http://127.0.0.1:4000
Step 2. Run the container
docker run --rm \
-v "$PWD:/srv/jekyll" \
-e BUNDLE_PATH="/srv/jekyll/.bundles_cache" \
-p 4000:4000 \
jekyll/builder:3.8 \
bash -c "gem install bundler && bundle install && bundle exec jekyll serve --host 0.0.0.0 --verbose --config _config.yml,_config_dev.yml"