Kubernetes
The cluster, end to end.
The largest body of work on this site — scheduling and autoscaling, networking and ingress, storage, security and RBAC, upgrades, and the operational failures that only appear once real traffic is on the cluster.
140 articles in this series
- 0113 min
PodSecurityContext vs Container SecurityContext: Every Field, Explained
Kubernetes has two securityContext blocks with the same name, different schemas, and one precedence rule everyone half-remembers. Here is exactly which fields live at each level, what happens when both are set, and the fsGroup and runAsNonRoot traps that break pods in production.
Read - 0214 min
PersistentVolume vs PersistentVolumeClaim: The Difference, Explained Properly
A PersistentVolume is storage that exists; a PersistentVolumeClaim is a request for some of it. That one sentence resolves most of the confusion — but the binding lifecycle, reclaim policies, and access modes hide real data-loss traps. Here's the full picture, from mental model to production gotchas.
Read - 0312 min
How to Taint a Node in Kubernetes — and When You Actually Should
Tainting a node is one kubectl command — the real skill is knowing which of the three effects to use and when a taint beats node affinity. Here's the full anatomy of taints and tolerations, every command you need, and the patterns that actually justify them: GPU pools, spot nodes, and control planes.
Read - 0415 min
kube-proxy vs Cilium: What Replacing the Kubernetes Datapath Actually Changes
kube-proxy has quietly translated Service VIPs into pod IPs on every node since Kubernetes 1.0 — and at scale, its iptables rule chains become the bottleneck. Here's what Cilium's eBPF kube-proxy replacement actually does differently, the measurable wins, the caveats nobody mentions, and when leaving kube-proxy alone is the right call.
Read - 0513 min
Local Kubernetes on macOS with Apple's container — No Docker Required
Apple's container tool can stand up a local Kubernetes cluster on macOS with no Docker anywhere in the stack. It is not a new distribution — it is kind's node image and kubeadm running on Apple's own runtime. Here's how the k8s plugin works, every command it gives you, and where it sits against kind, minikube and Docker Desktop.
Read - 0610 min
Ansible for Kubernetes Automation: Where It Fits and Where It Doesn't
The kubernetes.core collection lets Ansible create, patch and query any Kubernetes object, run Helm, and exec into pods. That does not make it a deployment tool — Ansible has no reconcile loop. Here are the three jobs it genuinely wins, the one it should never take, and the modules that actually exist.
Read - 0712 min
Kafka on Kubernetes with Strimzi: Node Pools, Storage, and the Parts That Hurt
Strimzi turns a Kafka cluster into a handful of CRDs, and ZooKeeper is gone — brokers and controllers are now KafkaNodePools running KRaft. Installing it is a morning's work. The parts that hurt are storage you cannot shrink, partition rebalancing, and deciding whether you should be running Kafka yourself at all.
Read - 0811 min
Chaos Engineering on Kubernetes: LitmusChaos, Chaos Mesh, and Why Killing Pods Teaches You Nothing
Chaos engineering is running an experiment against a hypothesis, not randomly deleting pods. If deleting a pod breaks you, that is a configuration bug you could have found by reading a manifest. Here are the failures actually worth injecting, and how LitmusChaos and Chaos Mesh differ in practice.
Read - 0910 min
What Is Kubernetes? Container Orchestration Explained
Kubernetes is an open-source container orchestration platform that runs containerised applications across a cluster of machines. You declare the state you want — how many copies, how much memory, which network route — and Kubernetes continuously works to make reality match, rescheduling and restarting containers as machines fail.
Read - 1011 min
Upgrading to Kubernetes 1.36: What Breaks and What to Check First
Kubernetes 1.36 'Haru' permanently disables gitRepo volumes and deprecates Service externalIPs, while kube-proxy's IPVS mode goes on a deprecation clock that ends in v1.43 — and it lands just as ingress-nginx goes unmaintained. Here's the pre-upgrade audit, ordered by blast radius, with the exact commands to find out if you're affected.
Read - 1113 min
Rook-Ceph vs Longhorn vs OpenEBS: Choosing Cloud-Native Storage for Kubernetes
The three most common ways to run persistent storage inside a Kubernetes cluster aren't really competing for the same job. Rook-Ceph is a full storage platform, Longhorn is simple replicated block storage, and OpenEBS Mayastor is a performance engine for databases. Here's how each one works and a decision rule for picking between them.
Read - 129 min
Fix Kubernetes FailedScheduling: 0/N nodes are available
A Pod stuck Pending with FailedScheduling means the scheduler looked at every node and rejected all of them. The Events line tells you why — here's how to read it and fix each cause.
Read - 138 min
Fix Kubernetes CreateContainerConfigError
CreateContainerConfigError means the kubelet can't build your container's config because it references a ConfigMap or Secret that's missing, misnamed, or missing a key. Here's how to find the exact reference that's broken and fix it.
Read - 149 min
Fix Kubernetes 'Readiness probe failed': Pod Running but Not Ready
Your pod is Running but shows 0/1 Ready, and describe pod reports 'Readiness probe failed'. That means Kubernetes pulled it out of the Service endpoints, so it gets no traffic. Here's how to find the real cause and fix it.
Read - 157 min
Fix kubectl 'connection to the server localhost:8080 was refused'
The connection to the server localhost:8080 was refused means kubectl has no valid kubeconfig loaded and fell back to a default that points nowhere. It's a client config problem, not a broken cluster. Here's how to fix it.
Read - 169 min
Fix kubectl 'x509: certificate signed by unknown authority'
This error means kubectl can't verify the API server's TLS certificate against the CA in your kubeconfig. Here's how to find which of the five common causes is yours and fix it.
Read - 179 min
Fix Helm 'another operation (install/upgrade/rollback) is in progress'
Helm refuses to upgrade because a release is stuck in a pending status after a previous command crashed or timed out. Here's how to diagnose the stuck revision and clear it safely.
Read - 189 min
Fix Kubernetes 'pod has unbound immediate PersistentVolumeClaims'
Your pod is stuck Pending with 'pod has unbound immediate PersistentVolumeClaims' because its PVC never bound to a PV. Here's how to find out why and fix each root cause.
Read - 198 min
Fix Kubernetes Exit Code 137 (SIGKILL / OOMKilled)
Exit code 137 means your container was killed by SIGKILL — usually OOMKilled, but not always. Here's how to tell the difference and fix each root cause.
Read - 208 min
What Is a Kubernetes Operator? The Custom-Controller Pattern Explained
A Kubernetes operator is a custom controller plus one or more CRDs that extends the Kubernetes API to automate an application's full lifecycle — install, upgrade, backup, failover. It encodes a human operator's runbook as software that continuously reconciles desired state.
Read - 219 min
What Is a Service Mesh? Sidecars, mTLS, and Traffic Control Explained
A service mesh is a dedicated infrastructure layer that manages service-to-service communication through proxies — adding mTLS, traffic control, resilience, and observability without touching application code. Here's how it works and whether you actually need one.
Read - 2210 min
kro vs Crossplane vs Helm: Choosing How to Build Kubernetes Platform Abstractions
Helm packages YAML, kro turns a graph of resources into a custom API, and Crossplane is a control plane for infrastructure. They're constantly compared, but they sit at different altitudes — here's what each actually does and how to choose.
Read - 2310 min
App-of-Apps vs ApplicationSet in Argo CD: Which Pattern to Use and When
Both App-of-Apps and ApplicationSet let one Argo CD Application manage many others — but they solve different problems. Here's the real decision: App-of-Apps for an explicit, hand-curated tree; ApplicationSet for generated fleets you don't want to maintain by hand.
Read - 246 min
Kubernetes RBAC Verbs: The Complete List, Including the Five Nobody Documents
Everyone knows get, list, and create. Almost nobody can explain deletecollection, bind, escalate, impersonate, or why 'use' only matters for one resource type. Here's the full verb list, what each one actually permits, and the privilege-escalation traps hidden in the obscure ones.
Read
The rest of the series
- PV vs PVC vs StorageClass: Who Owns What in Kubernetes Storage
- Kubernetes PodSecurityContext vs SecurityContext: Which One Applies
- Seven Kubernetes Mistakes I Keep Seeing in Production
- Detecting Insider Threats on Kubernetes: Audit Logs, RBAC Anomalies, and eBPF Enforcement
- Running Llama 3 70B on Kubernetes: AWQ Quantization and Tensor Parallelism
- Fix Kubernetes Pending Pods: Pod Stuck and Never Scheduled
- Fix Kubernetes Ingress 502 Bad Gateway
- Fix Kubernetes ImagePullBackOff and ErrImagePull
- Kubernetes User Namespaces: How Rootless Isolation Actually Works
- Fix Kubernetes OOMKilled: Pod Killed Due to Out of Memory
- Fix Kubernetes CrashLoopBackOff: Container Keeps Restarting
- NVIDIA GPU Operator: Running GPU Workloads on Kubernetes
- eBPF Observability: Tetragon, Hubble, and Pixie in Production
- Kubernetes Capacity Planning: Sizing Clusters and Managing Resources
- Kubernetes PodDisruptionBudget and Graceful Shutdown Patterns
- Kubernetes Cost Optimization: FinOps Patterns for EKS at Scale
- Kubernetes Operators: Building Controllers with Kubebuilder
- Kubernetes GPU Workloads: Scheduling Machine Learning Jobs on EKS
- Karpenter v1: Node Provisioning, Consolidation, and Drift
- Kubernetes Debugging: Systematic Troubleshooting for Production Incidents
- Kubernetes Resource Management: Quotas, LimitRanges, and QoS Classes
- Kubernetes Operators: Building Controllers with controller-runtime
- Kubernetes Scheduling: Taints, Tolerations, Affinity, and Priority Classes
- Kubernetes Resource Management: Requests, Limits, QoS, and LimitRanges
- Kubernetes Deployment vs StatefulSet: When to Use Which
- Kubernetes vs Docker Compose: When to Use Which (and When to Stop Using One)
- Docker Swarm vs Kubernetes vs Nomad: Choosing Your Container Orchestrator
- Kubernetes Liveness, Readiness, and Startup Probes: Getting Them Right
- Kubernetes Cost Optimisation: Spot Instances, Right-Sizing, and Namespace Budgets
- Kubernetes Debugging: A Systematic Guide to Diagnosing Pod and Node Failures
- Kubernetes Operators: Building Custom Controllers with CRDs
- Kubernetes HPA v2: Behavior Tuning and ContainerResource Metrics
- Kubernetes Node Autoscaling: Cluster Autoscaler vs Karpenter
- Kubernetes HPA and VPA: Horizontal and Vertical Pod Autoscaling
- Kubernetes VPA: Right-Sizing Containers Without Manual Tuning
- KEDA ScaledJob: Event-Driven Batch Processing on Kubernetes
- Kubernetes HPA Beyond CPU: Scaling on Custom and External Metrics
- Kubernetes Resource Requests and Limits: The Complete Production Guide
- Kubernetes Jobs and CronJobs: Production Patterns for Batch Workloads
- cert-manager in Production: TLS Automation for Kubernetes
- Crossplane: Cloud Infrastructure as Kubernetes Resources
- cert-manager: Automated TLS for Kubernetes
- Vault Secrets Operator vs External Secrets Operator: Which One Should You Run?
- EKS vs AKS: A Production Engineer's Comparison (2026)
- Kubernetes Multi-Tenancy: Namespace Isolation, Capsule, and vcluster
- Istio Service Mesh: Sidecar Mode in Production
- EKS Cluster Upgrades: Zero-Downtime Strategy for Production
- Cluster API: Declarative Kubernetes Cluster Lifecycle Management
- Multi-Cluster Kubernetes: Fleet Management with Flux and Argo CD
- How to Install Karpenter on EKS: A Production-Ready Setup Guide
- Karpenter IAM Deadlock: How We Broke Our EKS Cluster with a Terraform Apply
- EKS vs GKE vs AKS: Choosing Your Managed Kubernetes Platform
- Kubernetes Multi-Tenancy: Namespaces, Resource Quotas, and Network Isolation
- Kubernetes Cluster Upgrades: Zero-Downtime Strategy for Production
- Service Mesh Comparison: Istio vs Linkerd for Kubernetes
- Argo CD ApplicationSet: Multi-Cluster Deployment and Generator Patterns
- ExternalDNS: Automated DNS Management for Kubernetes Services
- Flux CD: GitOps for Kubernetes with Source Controller and Kustomize
- Argo Rollouts: Progressive Delivery with Canary and Blue-Green Deployments
- ArgoCD ApplicationSet Progressive Syncs: Controlled Multi-Cluster Rollouts
- Kubernetes Logging with Fluent Bit and Grafana Loki
- Kubernetes Logging: Fluent Bit and Grafana Loki
- Podscape v3.2: Mastering Kubernetes Governance with RBAC Forms and Resource Visibility
- Kubernetes Observability: Prometheus, Grafana, and OpenTelemetry in Production
- Kubernetes StatefulSets and Persistent Storage: Patterns for Stateful Workloads
- Kubernetes ConfigMaps and Secrets: Configuration Management Patterns
- Kubernetes Storage: EBS and EFS CSI Drivers on EKS
- Kubernetes StatefulSets: Running Stateful Workloads in Production
- Kubernetes Persistent Volumes: A Production Guide to PV, PVC, and StorageClass
- Kubernetes ConfigMap and Secret Best Practices: What Most Teams Get Wrong
- Kubernetes Disaster Recovery: Backup and Restore with Velero
- Kubernetes StatefulSets: Production Patterns for Stateful Workloads
- CoreDNS in Production: Scaling, Tuning, and Debugging Kubernetes DNS
- Kubernetes NetworkPolicy: Zero-Trust Networking for Multi-Team Clusters
- Kubernetes Gateway API: The Modern Replacement for Ingress
- Cilium: Advanced Networking, Security, and Observability on Kubernetes
- ingress-nginx in Production: Configuration, TLS, and Rate Limiting
- Kubernetes DNS: CoreDNS Configuration and Tuning
- Kubernetes Network Policies: Zero-Trust Networking
- Kubernetes Network Policies: A Practical Guide to Pod-Level Traffic Control
- Kubernetes Ingress vs Gateway API: When to Migrate and How
- Cilium and eBPF: High-Performance Kubernetes Networking
- Kubernetes Security Hardening: CIS Benchmark and Defense-in-Depth
- Kubernetes Admission Webhooks: OPA Gatekeeper and Kyverno
- Kubernetes RBAC Advanced Patterns
- Kubernetes Service Accounts and Workload Identity
- Kubernetes Pod Security Standards: Replacing PodSecurityPolicy
- Cilium Mutual Authentication: mTLS Without a Service Mesh
- RBAC vs ABAC in Kubernetes: Why ABAC Is Dead and What to Use Instead
- Kubernetes RBAC in Practice: Least Privilege Without the Headache
- Kubernetes Pod Security Admission: The PodSecurityPolicy Replacement Guide
- Kubernetes Security Hardening: A Production Checklist
- Kubernetes Admission Webhooks: Validating and Mutating Workloads
- Podscape vs Lens vs k9s: A Kubernetes Management Tool Comparison
- Why Your HPA Isn't Scaling — Fixing It with Custom Metrics (KEDA + Prometheus)
- How We Built a Real-Time Kubernetes UI Using Informers
- The Kubernetes Periodic Table: Every Essential Tool Category Explained
- Service Mesh Showdown: Istio vs Linkerd in 2026
- The Kubernetes Decision Path: A Practical Framework for Your Cloud-Native Stack
- Podscape v2.7.0: Unified Logs 2.0 & The Dynamic CRD Browser
- Kubernetes Service Types: Choosing Between ClusterIP, NodePort, and LoadBalancer
- Podscape v2.3.0: The AI-Ready Kubernetes IDE with Native MCP & Security Hub
- Cilium vs Calico on AKS: Which CNI Should You Actually Use?
- How to Deploy an LLM on Kubernetes: GPU Nodes, Model Serving, and Autoscaling
- Multi-Cluster Kubernetes: Patterns, Pitfalls, and When You Don't Actually Need It
- Securing AWS EKS with Bottlerocket: A Defense Against 'BadPods'
- KEDA: Event-Driven Autoscaling for Kubernetes Beyond CPU and Memory
- Kubernetes Cluster Upgrades Without Downtime: The Strategy That Actually Works
- Introducing Podscape: The Premium Kubernetes IDE for Human Beings
- eBPF for Platform Engineers: Cilium, Hubble, and Tetragon Without the Hype
- Helm Best Practices for Production: Structure, Upgrades, Hooks, and When to Walk Away
- Secrets Management in Kubernetes: Native Secrets, ESO, Vault, and SOPS Compared
- Databases in Kubernetes: Smart Move or Unnecessary Risk?
- The King is Dead? Why NGINX Ingress Users Must Move to Gateway API
- Kubernetes 1.35: The Great Filter
- The Ultimate Guide to Kubernetes Cost Optimization on AWS
Other series
Troubleshooting Guides
Paste the error, get the fix.
Tool Comparisons
X vs Y, decided on what matters in production.
What Is… Explainers
Plain definitions of terms that get used loosely.
AWS Service Guides
One service at a time, from someone who runs them.
AI & LLM Infrastructure
Running models yourself, and knowing when not to.
CI/CD Pipelines
Building, testing and shipping, without the pipeline owning you.