Kubernetes Roadmap
60 sections • 691 topics
- 1. Understanding Control Plane Components
- 2. Understanding Node Components
- 3. Understanding Pods as Deployment Units
- 4. Understanding Services and Networking
- 5. Understanding Workload Resources
- 6. Understanding Storage Abstractions
- 7. Understanding Configuration Resources
- 8. Understanding Namespaces and Multi-Tenancy
- 9. Understanding API Resources and Extensions
- 10. Understanding Cluster Add-Ons
- Cluster Architecture
- 1. Installing kubectl CLI
- 2. Configuring kubeconfig File
- Example: Minimal kubeconfig
- 3. Managing Multiple Contexts
- 4. Setting Default Namespace
- 5. Viewing Cluster Information
- 6. Checking kubectl Version
- 7. Enabling kubectl Autocompletion
- 8. Using kubectl Aliases
- Example: Common aliases
- 9. Installing kubectl Plugins
- 10. Configuring Authentication Methods
- 1. Creating Namespaces
- Example: Namespace YAML with labels
- 2. Listing Namespaces
- 3. Switching Namespaces
- 4. Deleting Namespaces
- 5. Using Namespace Flag
- 6. Viewing Resources Across Namespaces
- 7. Setting Resource Quotas
- Example: ResourceQuota
- 8. Configuring Limit Ranges
- Example: Container LimitRange
- 9. Understanding Default Namespaces
- 10. Isolating Namespaces with Network Policies
- Example: Deny all ingress from other namespaces
- 1. Creating Pod from YAML
- Example: Minimal Pod spec
- 2. Running Pod Imperatively
- 3. Listing Pods
- 4. Describing Pod Details
- 5. Viewing Pod Logs
- 6. Following Log Streams
- 7. Executing Commands in Pod
- 8. Port Forwarding to Pod
- 9. Deleting Pods
- 10. Using Pod Selectors
- 11. Watching Pod Status
- 12. Getting Pod YAML
- 13. Copying Files to Pod
- 1. Setting Container Images
- 2. Defining Resource Requests
- 3. Defining Resource Limits
- 4. Configuring Environment Variables
- Example: Combining env sources
- 5. Setting Container Commands
- 6. Configuring Working Directory
- 7. Setting Security Context
- Example: Hardened security context
- 8. Configuring Pod Priority
- 9. Using Pod Preemption Policy
- 10. Setting Pod Restart Policy
- 11. Configuring Pod DNS Policy
- 12. Using Service Account
- 1. Understanding Init Container Purpose
- 2. Defining Init Containers
- Example: Wait for database
- 3. Setting Init Container Order
- 4. Sharing Volumes with Main Containers
- Example: Init writes, app reads
- 5. Setting Init Container Resources
- 6. Handling Init Container Failures
- 7. Debugging Init Containers
- 8. Using Init Containers for Dependencies
- 9. Running Database Migrations
- Example: Flyway migration init
- 10. Downloading Configuration Files
- 1. Understanding Sidecar Pattern
- 2. Creating Multi-Container Pods
- Example: Native sidecar (1.29+)
- 3. Sharing Volumes Between Containers
- 4. Implementing Logging Sidecars
- Example: Stream log file to stdout
- 5. Implementing Proxy Sidecars
- 6. Using Ambassador Pattern
- 7. Using Adapter Pattern
- 8. Setting Container Lifecycle
- 9. Configuring Shared Network Namespace
- 10. Debugging Sidecar Containers
- 1. Configuring Liveness Probes
- 2. Configuring Readiness Probes
- 3. Configuring Startup Probes
- 4. Using HTTP Probes
- 5. Using TCP Probes
- 6. Using Exec Probes
- 7. Using gRPC Probes
- 8. Setting Initial Delay
- 9. Configuring Period Seconds
- 10. Setting Failure Threshold
- 11. Setting Success Threshold
- 12. Configuring Timeout Seconds
- Probe Cheat Sheet
- 1. Understanding Lifecycle Hooks
- 2. Configuring PostStart Hook
- 3. Configuring PreStop Hook
- Example: Graceful nginx drain
- 4. Using Exec Handler
- 5. Using HTTP Handler
- 6. Implementing Graceful Shutdown
- Graceful Shutdown Pattern
- 7. Understanding Hook Guarantees
- 8. Setting Termination Grace Period
- 9. Debugging Lifecycle Hooks
- 10. Using Hooks for Deregistration
- Example: Deregister from external service mesh
- 1. Creating Deployment
- Example: Deployment with rolling update
- 2. Applying Deployment YAML
- 3. Scaling Deployment
- 4. Updating Deployment Image
- 5. Viewing Rollout Status
- 6. Viewing Rollout History
- 7. Rolling Back Deployment
- 8. Pausing Rollouts
- 9. Resuming Rollouts
- 10. Configuring Update Strategy
- 11. Setting Max Unavailable
- 12. Setting Max Surge
- 13. Setting Revision History Limit
- 1. Listing ReplicaSets
- 2. Describing ReplicaSet Details
- 3. Scaling ReplicaSets
- 4. Deleting ReplicaSets
- 5. Understanding ReplicaSet Selectors
- 6. Viewing ReplicaSet Ownership
- 7. Viewing ReplicaSet Pods
- 8. Orphaning Pods During Deletion
- 9. Understanding ReplicaSet vs Deployment
- Deployment
- ReplicaSet
- 10. Troubleshooting ReplicaSet Issues
- 1. Creating StatefulSet
- Example: StatefulSet with PVC template
- 2. Listing StatefulSets
- 3. Describing StatefulSet Details
- 4. Scaling StatefulSet
- 5. Understanding Ordered Pod Creation
- 6. Using Parallel Pod Management
- 7. Configuring Volume Claim Templates
- 8. Using Headless Services
- 9. Understanding Stable Network IDs
- 10. Updating StatefulSets
- 11. Deleting StatefulSets
- 12. Troubleshooting StatefulSet Issues
- 1. Creating DaemonSet
- Example: Node log agent DaemonSet
- 2. Listing DaemonSets
- 3. Describing DaemonSet Details
- 4. Understanding DaemonSet Scheduling
- 5. Using Node Selectors
- 6. Using Node Affinity
- 7. Tolerating Taints
- 8. Updating DaemonSets
- 9. Setting Max Unavailable
- 10. Deleting DaemonSets
- 11. Troubleshooting DaemonSet Pods
- 1. Creating Job
- Example: One-shot Job
- 2. Creating Job from CronJob
- 3. Listing Jobs
- 4. Describing Job Details
- 5. Setting Completions Count
- 6. Setting Parallelism Level
- 7. Configuring Backoff Limit
- 8. Setting Active Deadline
- 9. Using Job Selectors
- 10. Viewing Job Logs
- 11. Deleting Jobs
- 12. Cleaning Up Finished Jobs
- 1. Creating CronJob
- Example: Nightly backup
- 2. Listing CronJobs
- 3. Describing CronJob Details
- 4. Setting Schedule Expression
- 5. Understanding Cron Syntax
- 6. Configuring Concurrency Policy
- 7. Setting Successful Jobs History
- 8. Setting Failed Jobs History
- 9. Suspending CronJobs
- 10. Setting Starting Deadline
- 11. Creating Manual Job Run
- 12. Deleting CronJobs
- 1. Creating ClusterIP Service
- Example: ClusterIP
- 2. Creating NodePort Service
- 3. Creating LoadBalancer Service
- 4. Creating Headless Service
- 5. Listing Services
- 6. Describing Service Details
- 7. Exposing Deployments
- 8. Configuring Service Selectors
- 9. Configuring Session Affinity
- 10. Setting External IPs
- 11. Using ExternalName Services
- 12. Viewing Service Endpoints
- 1. Creating Ingress Resource
- Example: Host + path-based routing with TLS
- 2. Listing Ingress Resources
- 3. Describing Ingress Details
- 4. Configuring Ingress Rules
- 5. Setting Default Backend
- 6. Using Path Types
- 7. Configuring TLS Termination
- 8. Using Ingress Annotations
- 9. Setting Ingress Class
- 10. Installing Ingress Controllers
- 11. Troubleshooting Ingress
- 1. Installing Gateway API CRDs
- 2. Creating GatewayClass Resource
- 3. Creating Gateway Resource
- 4. Configuring HTTPRoute
- 5. Using TCPRoute
- 6. Using TLSRoute
- 7. Setting Gateway Listeners
- 8. Configuring Backend References
- 9. Using Request Matching
- 10. Implementing Traffic Splitting
- 11. Understanding Gateway API vs Ingress
- Ingress
- Gateway API
- 1. Creating ConfigMap from Literal
- 2. Creating ConfigMap from File
- 3. Creating ConfigMap from Env File
- 4. Creating ConfigMap from YAML
- 5. Listing ConfigMaps
- 6. Describing ConfigMap Details
- 7. Using ConfigMap as Environment Variables
- 8. Mounting ConfigMap as Volume
- 9. Using Specific ConfigMap Keys
- 10. Updating ConfigMaps
- 11. Using Immutable ConfigMaps
- 12. Deleting ConfigMaps
- 1. Creating Generic Secret
- 2. Creating TLS Secret
- 3. Creating Docker Registry Secret
- 4. Encoding Secret Data
- 5. Listing Secrets
- 6. Describing Secret Details
- 7. Using Secrets as Environment Variables
- 8. Mounting Secrets as Volumes
- 9. Using imagePullSecrets
- 10. Updating Secrets
- 11. Understanding Secret Types
- 12. Deleting Secrets
- 1. Creating Service Account
- 2. Listing Service Accounts
- 3. Describing Service Account Details
- 4. Using Service Account in Pod
- 5. Understanding Default Service Account
- 6. Configuring Automount Token
- 7. Creating Service Account Token
- 8. Using Bound Service Account Tokens
- 9. Configuring Token Expiration
- 10. Deleting Service Accounts
- 1. Using emptyDir Volumes
- 2. Using hostPath Volumes
- 3. Configuring PersistentVolumes
- 4. Creating PersistentVolumeClaims
- 5. Binding PVC to PV
- Binding Lifecycle
- 6. Listing PersistentVolumes
- 7. Listing PersistentVolumeClaims
- 8. Understanding Access Modes
- 9. Setting Reclaim Policies
- 10. Using Dynamic Provisioning
- 11. Expanding PersistentVolumes
- 12. Deleting PersistentVolumeClaims
- 1. Installing VolumeSnapshot CRDs
- 2. Creating VolumeSnapshotClass
- 3. Creating VolumeSnapshot
- 4. Listing VolumeSnapshots
- 5. Describing VolumeSnapshot Details
- 6. Restoring PVC from Snapshot
- 7. Configuring Snapshot Deletion Policy
- 8. Using Snapshot with CSI Drivers
- 9. Deleting VolumeSnapshots
- 10. Troubleshooting Snapshot Issues
- 1. Understanding Projected Volumes
- 2. Projecting Secrets
- 3. Projecting ConfigMaps
- 4. Projecting Service Account Tokens
- 5. Projecting Downward API
- 6. Configuring Token Expiration
- 7. Setting Token Audience
- 8. Combining Multiple Sources
- Example: All-in-one projected volume
- 9. Using Projected Volumes for mTLS
- 10. Debugging Projected Volumes
- 1. Setting CPU Requests
- 2. Setting Memory Requests
- 3. Setting CPU Limits
- 4. Setting Memory Limits
- 5. Understanding Resource Units
- 6. Configuring LimitRange
- 7. Setting ResourceQuota
- 8. Viewing Resource Usage
- 9. Understanding QoS Classes
- 10. Setting Priority Classes
- 11. Configuring Pod Disruption Budgets
- 12. Using Extended Resources
- 1. Creating HPA
- 2. Creating HPA from YAML
- 3. Listing HPAs
- 4. Describing HPA Details
- 5. Setting Min and Max Replicas
- 6. Using CPU-Based Scaling
- 7. Using Memory-Based Scaling
- 8. Using Custom Metrics
- 9. Configuring Scale Up Behavior
- 10. Configuring Scale Down Behavior
- 11. Setting Stabilization Window
- 12. Troubleshooting HPA
- 1. Adding Taints to Nodes
- 2. Removing Taints from Nodes
- 3. Listing Node Taints
- 4. Understanding Taint Effects
- 5. Configuring Tolerations
- 6. Using Toleration Operators
- 7. Setting Toleration Seconds
- 8. Understanding Default Tolerations
- 9. Using Taints for Dedicated Nodes
- Example: GPU node pool isolation
- 10. Combining Taints with Node Affinity
- 1. Using requiredDuringScheduling
- 2. Using preferredDuringScheduling
- 3. Configuring Node Selectors
- 4. Using matchExpressions
- 5. Setting Node Label Selectors
- 6. Combining Multiple Affinity Rules
- 7. Using Node Anti-Affinity
- 8. Setting Weight Priority
- 9. Using IgnoredDuringExecution
- 10. Troubleshooting Affinity Rules
- 1. Understanding Topology Spread
- 2. Setting Maximum Skew
- 3. Configuring When Unsatisfiable
- 4. Using Topology Keys
- 5. Configuring Label Selectors
- 6. Setting Match Label Keys
- 7. Using Min Domains
- 8. Combining Multiple Constraints
- Example: Zone + node spread
- 9. Understanding Node Inclusion Policy
- 10. Troubleshooting Spread Issues
- 1. Understanding Admission Controllers
- 2. Enabling Admission Plugins
- 3. Using ValidatingWebhookConfiguration
- 4. Using MutatingWebhookConfiguration
- 5. Implementing OPA Gatekeeper
- 6. Creating Constraint Templates
- 7. Creating Constraints
- 8. Implementing Image Policy
- 9. Using LimitRanger
- 10. Testing Admission Webhooks
- 11. Troubleshooting Admission Failures
- 1. Installing Helm CLI
- 2. Adding Helm Repositories
- 3. Updating Helm Repositories
- 4. Searching Helm Charts
- 5. Installing Helm Chart
- 6. Upgrading Helm Release
- 7. Rolling Back Release
- 8. Listing Helm Releases
- 9. Viewing Release Values
- 10. Uninstalling Helm Release
- 11. Creating Custom Chart
- 12. Using Helm Templating
- 1. Understanding Kustomize Concepts
- 2. Creating kustomization.yaml
- 3. Applying Kustomize Manifests
- 4. Using Strategic Merge Patches
- 5. Using JSON Patches
- 6. Configuring Name Prefixes
- 7. Generating ConfigMaps
- 8. Generating Secrets
- 9. Setting Common Labels
- 10. Using Overlays
- 11. Configuring Image Tags
- 12. Building Kustomize Output
- 1. Viewing Pod Logs
- 2. Following Log Streams
- 3. Viewing Previous Container Logs
- 4. Executing Commands in Pods
- 5. Creating Debug Containers
- 6. Using Ephemeral Containers
- 7. Viewing Pod Events
- 8. Using Port Forwarding
- 9. Inspecting API Objects
- 10. Checking Cluster Events
- 11. Troubleshooting Networking
- 12. Using Node Debug Pods
- 1. Implementing Network Segmentation
- 2. Enabling RBAC Authorization
- 3. Using Pod Security Standards
- 4. Scanning Container Images
- 5. Enabling Secrets Encryption
- 6. Using Admission Controllers
- 7. Enabling Audit Logging
- 8. Implementing mTLS
- 9. Rotating Certificates
- 10. Running CIS Benchmarks
- 11. Using Runtime Security
- 12. Implementing Supply Chain Security
- 1. Right-Sizing Resources
- 2. Using Spot Instances
- 3. Implementing Cluster Autoscaler
- 4. Configuring Pod Disruption Budgets
- 5. Using Vertical Pod Autoscaler
- 6. Scheduling Workloads Efficiently
- 7. Implementing Resource Quotas
- 8. Using Storage Classes Wisely
- 9. Cleaning Up Unused Resources
- 10. Monitoring Cost Allocation
- 1. Understanding Multi-Cluster Patterns
- 2. Installing KubeFed
- 3. Creating Federated Clusters
- 4. Deploying Federated Resources
- 5. Configuring Placement Policies
- 6. Implementing Cross-Cluster Discovery
- 7. Using Multi-Cluster Ingress
- 8. Configuring Context Switching
- 9. Implementing Disaster Recovery
- Multi-Cluster DR Drill
- 10. Monitoring Federated Clusters