Skip to content
tezvyn:

Docker & Kubernetes

Containers, Helm, orchestration, service mesh

148 bites

Test yourself: Top 30 Docker & Kubernetes concepts questionsMultiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Concepts in Docker & Kubernetes, page 3

Kubernetes Pods: The Atomic Unit of Deployment
easy2 min read

Kubernetes Pods: The Atomic Unit of Deployment

A Pod is the smallest deployable unit in Kubernetes, a wrapper for one or more containers that run together on one machine. It's used for tightly coupled 'sidecar' helpers, like a log shipper.

Labels and Selectors: The Glue of Kubernetes
easy2 min read

Labels and Selectors: The Glue of Kubernetes

Labels are key-value tags for organizing Kubernetes objects; selectors are queries to find them. This is how a Service finds its Pods. The main footgun is a mismatched selector, which orphans Pods from the Deployment that created them.

etcd: Kubernetes's Single Source of Truth
intermediate2 min read

etcd: Kubernetes's Single Source of Truth

etcd is the distributed key-value store that acts as the brain for a Kubernetes cluster, storing its entire configuration and state. The API server uses it to persist all objects, from Pods to Secrets.

Kubelet: The Node Agent of Kubernetes
intermediate2 min read

Kubelet: The Node Agent of Kubernetes

The kubelet is the primary agent on each Kubernetes node, ensuring containers described in PodSpecs are running and healthy. It watches the API server for work and reports status back. The footgun is trying to manage it directly; always use the API server.

Kubernetes Controllers: The Reconciliation Loop
advanced2 min read

Kubernetes Controllers: The Reconciliation Loop

A Kubernetes controller acts like a thermostat for your cluster, constantly working to make the actual state match your desired state. It's the engine behind Deployments and ReplicaSets, ensuring the right number of pods are always running.

kube-scheduler: The Cluster's Matchmaker
advanced2 min read

kube-scheduler: The Cluster's Matchmaker

The kube-scheduler is your cluster's matchmaker, assigning new Pods to the best possible Node based on their needs. This is the default workload placement engine. The footgun is thinking it runs Pods; it only *assigns* them to a Node.

kube-controller-manager: The Cluster's Reconciliation Engine
advanced2 min read

kube-controller-manager: The Cluster's Reconciliation Engine

The kube-controller-manager is Kubernetes' reconciliation engine, running multiple control loops to make the cluster's actual state match your desired state. It handles tasks like ensuring a Deployment has the correct pod count.

ReplicaSet: Kubernetes' Pod Thermostat
easy2 min read

ReplicaSet: Kubernetes' Pod Thermostat

A ReplicaSet is Kubernetes' thermostat for pods, ensuring a specific number of replicas are always running. It replaces crashed pods or removes excess ones to maintain a stable state.

Kubernetes Requests and Limits: Your Pod's Resource Contract
easy2 min read

Kubernetes Requests and Limits: Your Pod's Resource Contract

Kubernetes Requests and Limits are your pod's resource contract: requests guarantee a minimum for scheduling, while limits enforce a maximum at runtime. This prevents one greedy app from crashing others.

Kubernetes Jobs: For Tasks That Need to Finish
easy2 min read

Kubernetes Jobs: For Tasks That Need to Finish

A Kubernetes Job runs a task to completion, unlike a Deployment which runs forever. Use it for one-off operations like database migrations or batch processing. The footgun is forgetting to set a retry limit, causing failed jobs to loop indefinitely.

Recreate Deployment: Downtime for a Clean Slate
easy2 min read

Recreate Deployment: Downtime for a Clean Slate

The Recreate strategy is like flipping a switch: it shuts down all old pods before starting new ones. This guarantees downtime but is necessary for breaking changes, like a database migration. The footgun is a failed deployment leaves you with no running app.

Imperative kubectl: Directly Command Your Cluster
easy2 min read

Imperative kubectl: Directly Command Your Cluster

Imperative kubectl is like giving direct orders to your cluster: 'run this,' 'scale that.' It's great for quick, one-off tasks like debugging a pod or handling an incident.

Kubernetes Probes: Liveness, Readiness, and Startup
intermediate2 min read

Kubernetes Probes: Liveness, Readiness, and Startup

Kubernetes probes ask your app about its health. Liveness asks 'are you alive?' (restart if not), readiness asks 'can you take work?' (pause traffic if not), and startup protects slow-starting apps. This is key for self-healing and zero-downtime deployments.

Init Containers: Setup Tasks Before Your Main App Runs
intermediate2 min read

Init Containers: Setup Tasks Before Your Main App Runs

Init containers are setup tasks that run to completion before your main application starts. Use them to wait for dependencies, fetch configs, or run database migrations.

Kubernetes CronJob: Scheduled Tasks in Your Cluster
intermediate2 min read

Kubernetes CronJob: Scheduled Tasks in Your Cluster

A Kubernetes CronJob is like a recurring alarm for your cluster. It automatically runs tasks like backups or reports on a schedule, creating a new Job for each run. The main footgun is concurrency: by default, jobs can overlap if one runs too long.

Pod QoS Classes: Guaranteed, Burstable, BestEffort
advanced2 min read

Pod QoS Classes: Guaranteed, Burstable, BestEffort

Kubernetes QoS classes are eviction priorities, not performance guarantees. Under node pressure, the kubelet kills BestEffort pods first, then Burstable, then Guaranteed. Omitting limits does not grant infinite headroom; it makes your pod die first.

Pod Disruption Budgets: Stop Upgrades From Killing Your App
advanced2 min read

Pod Disruption Budgets: Stop Upgrades From Killing Your App

A Pod Disruption Budget (PDB) is a contract with Kubernetes to maintain minimum availability. It limits how many pods can be voluntarily terminated at once during node drains or cluster upgrades, preventing self-inflicted outages.

Pod Affinity: Grouping or Separating Your Pods
advanced2 min read

Pod Affinity: Grouping or Separating Your Pods

Pod affinity tells Kubernetes to place pods together for performance or apart for high availability. Use it to co-locate a web server and cache for low latency, or spread database replicas across nodes to prevent a single point of failure.

ClusterIP Service: Internal-Only Networking
easy2 min read

ClusterIP Service: Internal-Only Networking

A ClusterIP service is like an unlisted phone number for your pods, providing a stable internal IP for communication *within* the cluster. Use it for backend-to-backend traffic. The footgun is assuming it's reachable from the outside—it's not.

Kubernetes DNS: How Pods Find Each Other
easy2 min read

Kubernetes DNS: How Pods Find Each Other

Kubernetes DNS gives services and pods stable, human-readable names so you don't have to track ephemeral IP addresses. It's how a frontend pod finds a backend service.

We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.

See open roles