Kubernetes Glossary – In-Depth Explanations for CKAD & CKA
1. Pod
What:
A pod is the smallest deployable unit in Kubernetes. It wraps one or more containers that share:
- Network (same IP)
- Storage (volumes)
- Lifecycle
You don’t run containers directly in Kubernetes — you run pods.
Why:
- Every workload runs in a pod.
- Even a single-container app must be in a pod.
- Critical for understanding how deployments, jobs, and services work.
Example:
apiVersion: v1
kind: Pod
metadata:
name: demo
spec:
containers:
- name: web
image: nginx
Gotchas:
- Pods are ephemeral. If a pod dies, it's gone unless managed by a controller.
- Logs and filesystem are gone unless externalized (volumes or log collection).
2. ReplicaSet
What:
ReplicaSet ensures that N number of identical pods are running at all times. It will add or remove pods to match the desired count.
Why:
- Ensures high availability and auto-recovery.
- Underpins Deployments.
- CKA exam expects you to understand its role, even if you rarely define one directly.
Gotchas:
- Don't use it directly; use Deployments.
- Selector mismatch = ReplicaSet won’t manage pods → no scaling.
3. Deployment
What:
A controller that manages ReplicaSets. Provides features like:
- Rolling updates
- Rollbacks
- Declarative updates of app versions
Why:
- Primary way to deploy applications in Kubernetes.
- Simplifies version control, scaling, and upgrades.
Gotchas:
- kubectl rollout undo
reverts changes.
- Don't confuse Deployment
strategy (rollingUpdate
or recreate
) with Pod
restarts.
4. StatefulSet
What:
A controller for stateful applications. Unlike Deployments:
- Each pod gets a persistent identity (name, volume, network)
- Pods are created in order, terminated in reverse
Why:
- Needed for databases, queues, apps that can't be scaled blindly.
- Real-world apps like PostgreSQL, Kafka, Zookeeper rely on it.
Gotchas:
- Needs a Headless Service
(clusterIP: None
)
- Slower to scale; pods must start one-by-one
5. DaemonSet
What:
Ensures that one pod runs on every (or selected) node. Useful for background agents like:
- Log collectors (e.g., Fluentd)
- Monitoring tools (e.g., Node Exporter)
Why:
- Critical for cluster-wide side tools.
- CKAD/CKA will test it in system-level scenarios.
Gotchas:
- Doesn’t respect pod anti-affinity; you must configure it yourself.
- Deleting a node = pod disappears too.
6. Job
What:
Runs a pod to completion (e.g., for batch jobs, scripts, one-off tasks). It will re-run the pod if it fails until it completes successfully (or reaches a failure threshold).
Why:
- Required for database migrations, cleanup tasks, report generation.
- CKA often includes this in troubleshooting questions.
Gotchas:
- Will not restart if the container exits 0 unless it hasn’t reached completions
.
7. CronJob
What:
A Job scheduled at regular intervals using cron syntax.
Why:
- Replaces external crontabs with native K8s job scheduling.
- Supports history, retries, concurrency policy.
Gotchas:
- Check concurrencyPolicy: Forbid/Allow/Replace
if overlapping jobs matter.
- Pods may remain if history is not cleaned (successfulJobsHistoryLimit
).
8. Namespace
What:
Virtual cluster partitioning inside a real cluster. Isolates workloads by:
- Resource quota
- Access permissions
- Network policies (sometimes)
Why:
- Needed for multi-team environments.
- Every resource (except nodes/persistent volumes) is namespaced.
Gotchas:
- Namespace deletion is slow if it contains finalizers.
- Don’t assume network isolation unless policies exist.
9. Node
What:
A worker machine (VM or physical) in the cluster. It runs:
- kubelet
- container runtime (e.g., containerd)
- kube-proxy
Why:
- Fundamental for understanding scheduling, affinity, failure domains.
Gotchas:
- Taints on nodes prevent pods from scheduling.
- Master nodes are schedulable only if NoSchedule
taint is removed.
10. Service
What:
A stable endpoint that abstracts access to a set of pods. It:
- Load-balances traffic to healthy pods
- Gets a virtual IP (ClusterIP)
- Can be exposed via NodePort, LoadBalancer, or ExternalName
Why:
- The only sane way to access pods (whose IPs change).
- Required for communication between apps.
Gotchas:
- No built-in health checks — relies on endpoints.
- Only forwards to ready pods.
11. ConfigMap
What:
Used to inject non-sensitive configuration data into pods.
Why:
- Keeps code and config separate
- Lets you update config without rebuilding containers
Gotchas:
- Changing a ConfigMap won’t update the pod unless it’s reloaded/restarted.
- Use volume mount for live reloading only if the app supports it.
12. Secret
What:
Stores sensitive data like passwords and tokens in base64 format.
Why:
- Prevents secrets from being hardcoded.
- Can be mounted as volumes or environment variables.
Gotchas:
- Base64 ≠ secure encryption. Use encryption at rest and limit RBAC access.
13. Init Container
What:
A special type of container that runs before the main application containers in a pod. It completes its task and exits before the main containers start.
Why:
- Used for initialization logic (e.g., downloading files, waiting for service readiness)
- Allows separation of setup logic from app logic
Gotchas:
- If an init container fails, the pod stays in the Init
phase.
- Does not share process namespace with main containers.
14. Sidecar Container
What:
A container in the same pod as the main app, providing supporting functionality like logging, proxying, or syncing data.
Why:
- Useful for separating concerns
- Common in service meshes (e.g., Envoy in Istio)
Gotchas:
- Poor coordination between sidecar and main container can cause lifecycle issues.
- They share the pod’s resources and lifecycle.
15. ServiceAccount
What:
An identity for processes running in a pod to interact with the Kubernetes API.
Why:
- Used by pods, controllers, and tools to authenticate securely to the cluster.
Gotchas:
- Every pod gets the default service account unless you specify another.
- Unused tokens may be mounted unless explicitly disabled.
16. Role / ClusterRole
What:
Defines a set of permissions (verbs on resources).
- Role
applies to a namespace.
- ClusterRole
applies cluster-wide or can be bound to namespaces.
Why:
- Core of RBAC (Role-Based Access Control)
Gotchas:
- Must match with appropriate RoleBinding
or ClusterRoleBinding
.
17. RoleBinding / ClusterRoleBinding
What:
Assigns a Role or ClusterRole to a user/group/service account.
Why:
- Grants actual permission to use a role.
- Required for access control and secure multi-tenant setups.
Gotchas:
- Binding a ClusterRole to a namespace still scopes access to that namespace.
18. SecurityContext
What:
Defines privilege and access control settings for containers, including:
- User IDs
- Capabilities
- Filesystem permissions
Why:
- Critical for security posture (least privilege, rootless containers)
Gotchas:
- Some settings only work if supported by the container runtime and image.
19. Liveness Probe
What:
Checks if the app is still running. If it fails, Kubernetes restarts the container.
Why:
- Prevents deadlocks, stuck apps from hanging indefinitely.
Gotchas:
- If misconfigured, it can cause endless restarts.
20. Readiness Probe
What:
Checks if the app is ready to serve traffic. If it fails, the pod is removed from Service endpoints, but not restarted.
Why:
- Prevents traffic from hitting an unready app.
Gotchas:
- Unlike liveness, it won’t restart the pod — just removes it from load balancing.
21. Startup Probe
What:
Used to delay the liveness and readiness probes until the app is fully started. Avoids false failures for slow-starting apps.
Why:
- Helps prevent premature restarts of large or complex apps.
Gotchas:
- Only one-time use at pod startup; not repeated like the other probes.
22. Taints and Tolerations
What:
- Taint on a node says “don’t schedule pods here unless they tolerate it.”
- Toleration on a pod says “I can go on tainted nodes.”
Why:
- Used for dedicating nodes to certain workloads (e.g., GPU, high-memory)
Gotchas:
- No toleration = pod won't be scheduled on tainted node.
23. Affinity / Anti-Affinity
What:
- Controls where pods are scheduled relative to other pods.
- Affinity: “prefer pods with X label”
- Anti-affinity: “don’t schedule near pods with X label”
Why:
- Used for spreading or grouping apps across zones/nodes for HA or compliance.
Gotchas:
- Must be carefully defined, otherwise pods might not get scheduled at all.
24. HorizontalPodAutoscaler (HPA)
What:
Automatically adjusts the number of pod replicas based on CPU/memory usage or custom metrics.
Why:
- Saves resources, improves resilience under load.
Gotchas:
- Needs metrics-server
to function.
- Doesn’t scale to 0 — use Knative or KEDA for that.
25. Volume / PersistentVolume / PVC
What:
- Volume
: Temporary storage for containers.
- PersistentVolume (PV)
: A piece of persistent storage provisioned in the cluster.
- PersistentVolumeClaim (PVC)
: A request for storage by a pod.
Why:
- Needed for data persistence across restarts.
Gotchas:
- PVC and Pod must be in the same namespace.
- Reclaim policy of PV determines what happens when PVC is deleted.
26. ClusterIP / NodePort / LoadBalancer / ExternalName
ClusterIP (default):
Creates a virtual IP accessible only inside the cluster. Used for internal service communication.
NodePort:
Exposes the service on each Node’s IP at a specific port. Allows access from outside the cluster via NodeIP:NodePort
.
LoadBalancer:
Provisions an external load balancer via cloud provider. Best for public-facing apps.
ExternalName:
Maps a service to an external DNS name. No proxying, just DNS aliasing.
Why:
- These are the core Service types.
- Critical for application connectivity and external exposure.
Gotchas:
- NodePort uses a static port (30000–32767); avoid hardcoding.
- LoadBalancer won’t work without cloud integration.
27. NetworkPolicy
What:
Defines ingress and egress rules for pod traffic. Acts like a firewall at the pod level.
Why:
- Enforces zero-trust networking in the cluster.
- Required in production-grade secure environments.
Gotchas:
- No default deny unless you explicitly define it.
- Depends on CNI plugin support (e.g., Calico supports it, Flannel does not).
28. CNI (Container Network Interface)
What:
Plugin system that Kubernetes uses to provide networking capabilities.
Why:
- Defines how pods get IPs, how routing works
- Enables features like NetworkPolicy, multi-networking
Gotchas:
- K8s doesn't do networking itself—it delegates to CNI.
- Not all CNIs support advanced features like NetworkPolicy or IP masquerading.
29. Ingress / Ingress Controller
Ingress:
Defines rules for routing external HTTP/HTTPS traffic to services in the cluster.
Ingress Controller:
Implements the ingress rules. Common options: NGINX, Traefik, Istio.
Why:
- Offers path-based and host-based routing.
- Enables TLS termination, authentication, rewrites, rate limits.
Gotchas:
- Ingress rules do nothing unless an Ingress Controller is installed.
- Each controller has its own annotations and behaviors.
30. DNS Resolution
What:
Pods and Services automatically get internal DNS records via CoreDNS.
Why:
- Enables service discovery inside the cluster.
- Pods can refer to services by name like myservice.namespace.svc.cluster.local
.
Gotchas:
- DNS cache can cause delays in detecting service updates.
- Long hostnames can be truncated/misinterpreted in older clients.
31. StorageClass
What:
Defines the type of storage (e.g., SSD, HDD, NFS) and its provisioning method (manual, dynamic).
Why:
- Allows dynamic provisioning of PersistentVolumes when PVC is created.
Gotchas:
- Only one default StorageClass allowed per cluster unless explicitly defined.
- ReclaimPolicy affects how volumes are handled after PVC deletion.
32. VolumeMount
What:
Mounts a Kubernetes Volume into a specific path in a container.
Why:
- Required for sharing config files, data, or logs with the app.
Gotchas:
- If the mount path exists, it will overwrite any existing files.
33. ReadWriteOnce / ReadWriteMany / ReadOnlyMany
What:
Defines volume access modes:
- RWO: Mounted by one node for read/write
- RWX: Mounted by multiple nodes (e.g., NFS)
- ROX: Mounted read-only by many nodes
Why:
- Defines how multiple pods share data safely.
Gotchas:
- Not all volume plugins support RWX (e.g., AWS EBS doesn’t).
34. Termination Grace Period
What:
How long Kubernetes waits before forcefully killing a pod during shutdown.
Why:
- Gives the app time to shut down cleanly (close DB connections, flush logs)
Gotchas:
- If PreStop hook or SIGTERM handling is slow, pod can be force-killed.
35. Lifecycle Hooks
What:
Run specific commands at certain points in a container’s lifecycle:
- PostStart
: after container starts
- PreStop
: before container stops
Why:
- Used for setup, cleanup, draining connections
Gotchas:
- Must be quick — long-running PreStop can delay pod deletion.
36. Controller Manager
What:
Component that runs all built-in controllers (Deployment, Node, Job, etc.)
Why:
- Keeps the actual vs desired state in sync
Gotchas:
- If it goes down, nothing is enforced (but existing apps still run).
37. Scheduler
What:
Assigns pods to nodes based on resource availability, affinity rules, taints/tolerations.
Why:
- Ensures optimal use of cluster resources
Gotchas:
- If scheduling fails (e.g., no memory, taint mismatch), pods stay pending.
38. kubelet
What:
Agent that runs on each node and ensures the containers are running as expected.
Why:
- Core component for node management
Gotchas:
- Doesn’t communicate directly with etcd, only with kube-apiserver.
39. kube-proxy
What:
Maintains network rules on nodes to allow communication to/from services.
Why:
- Enables service IP routing via iptables/ipvs
Gotchas:
- Only manages Service networking — not full pod-to-pod mesh.
40. etcd
What:
The key-value store backing Kubernetes state (like a database for the cluster).
Why:
- Stores all objects, configurations, secrets, status, etc.
Gotchas:
- If etcd is lost and not backed up, your cluster is gone.
- Should be backed up regularly and secured.
41. Admission Controllers
What:
Plugins that intercept requests to the Kubernetes API after authentication/authorization, and either mutate or validate them.
Why:
- Add extra enforcement or transformation
- Used for security, policy, and defaults
Gotchas:
- Some are enabled by default (e.g., NamespaceLifecycle, LimitRanger)
- Others like OPA Gatekeeper or PodSecurityPolicy must be explicitly configured
42. PodSecurityPolicy (Deprecated)
What:
Legacy method to enforce pod-level security controls (e.g., no root, restricted volumes).
Why:
- Deprecated in Kubernetes 1.21+ in favor of PodSecurity Admission
Gotchas:
- Deprecated and removed in 1.25 — don’t use for new deployments.
43. PodSecurity Admission
What:
Replacement for PodSecurityPolicy. Applies security profiles (restricted
, baseline
, privileged
) using labels.
Why:
- Much easier to use than PSP
- Enforces consistent security policies
Gotchas:
- Must label namespaces for it to take effect.
- Does not mutate pods — only validates.
44. Audit Logs
What:
Records of who did what in the Kubernetes API server.
Why:
- Essential for compliance, forensics, and debugging
Gotchas:
- Needs to be explicitly configured via audit policy file
- Logs can be large — offload to log aggregator
45. Metrics Server
What:
Collects resource usage metrics like CPU and memory from kubelets.
Why:
- Required for HPA (HorizontalPodAutoscaler)
- Enables real-time monitoring of pod and node resource usage
Gotchas:
- Not installed by default
- Doesn’t persist metrics (for that, use Prometheus)
46. Debug (Ephemeral Containers)
What:
Temporary container injected into a running pod for debugging (without restarting it).
Why:
- Lets you debug broken containers that don’t have a shell or CLI tools
Gotchas:
- Must enable the EphemeralContainers
feature gate in older clusters
- Doesn’t support networking outside the pod
47. exec
What:
Runs a command inside a running container.
Why:
- Crucial for debugging, health checks, quick fixes
Gotchas:
- Needs shell access in the container
- Doesn’t persist; only for interactive use
48. Port-forward
What:
Forwards a port from your local machine to a pod in the cluster.
Why:
- Lets you access services/pods without exposing them publicly
Gotchas:
- Only lasts while the command is active
- Useful for debugging, not production use
49. Describe
What:
Displays detailed state of a Kubernetes resource, including status, events, configuration.
Why:
- Primary tool for debugging stuck, crashing, or pending pods
Gotchas:
- Verbose output — search with grep or less
50. Logs
What:
Shows stdout/stderr logs of a container in a pod.
Why:
- First place to look when troubleshooting a crashing or misbehaving container
Gotchas:
- Only works for currently or recently running containers
- Doesn’t capture app-level logging unless redirected to stdout
51. Recreate Strategy
What:
Deployment strategy that kills all old pods before starting new ones.
Why:
- Use when old and new versions can't coexist (e.g., DB schema changes)
Gotchas:
- Downtime during rollout
52. RollingUpdate Strategy
What:
Default strategy that updates pods gradually to avoid downtime.
Why:
- Smooth deployments without service interruption
Gotchas:
- Misconfigured probes can delay rollout
53. VerticalPodAutoscaler (VPA)
What:
Adjusts resource requests (CPU/mem) for pods automatically based on usage.
Why:
- Avoids over/under-provisioning
- Complements or replaces manual tuning
Gotchas:
- Doesn’t work with HPA on same deployment
- Restarts pods when applying changes
54. Deployment Revision History
What:
Tracks version history of deployment changes for rollback.
Why:
- Enables kubectl rollout undo
Gotchas:
- Limited by revisionHistoryLimit
55. Canary Deployment
What:
Releases a new version to a subset of users or pods for testing.
Why:
- Safer releases, early detection of bugs
Gotchas:
- Needs proper monitoring and rollback plan
56. Blue-Green Deployment
What:
Runs two parallel environments (blue = old, green = new). Switch traffic only when ready.
Why:
- Instant switch between versions
- Easy rollback
Gotchas:
- Expensive (double resources)
- More complex to orchestrate in Kubernetes without tooling
57. Helm
What:
Kubernetes package manager. Uses charts (templated YAML files) to deploy and manage apps.
Why:
- Simplifies deployment of complex apps
- Supports versioning, upgrades, config overrides
Gotchas:
- Requires understanding templating and values.yaml
- Can abstract too much, hiding important details
58. kubeadm
What:
Tool to bootstrap Kubernetes clusters. Handles control plane init, node join, certificates.
Why:
- Fastest way to set up a K8s cluster manually
Gotchas:
- Doesn’t install CNI plugin
- Requires extra setup for production hardening
59. Custom Resource Definitions (CRD)
What:
Extends the Kubernetes API to allow custom resources like KafkaCluster
, RedisOperator
, etc.
Why:
- Powers tools like Prometheus, Cert-Manager, ArgoCD
Gotchas:
- Must define schema properly
- Not validated unless OpenAPI schema is included
60. Operator
What:
Custom controller that manages an app using CRDs. Encodes operational knowledge (like backup, failover).
Why:
- Automates management of complex, stateful apps
Gotchas:
- Writing your own is complex
- Existing operators can be buggy if not well maintained
78. Resource Requests vs Limits (continued)
What:
- Request: minimum guaranteed resources for scheduling
- Limit: maximum resources a container can use
Why:
- Ensures fair sharing and prevents resource exhaustion
Gotchas:
- Over-requesting wastes resources, under-requesting causes evictions
79. Eviction
What:
When the kubelet removes a pod from a node due to resource pressure (CPU, memory, disk).
Why:
- Protects node stability
Gotchas:
- Not the same as graceful deletion — can be sudden and disrupt services
80. Event
What:
System-generated record for state changes (e.g., pod created, image pull failed).
Why:
- Critical for debugging and visibility
Gotchas:
- Events are ephemeral; use log collectors to persist
81. Label
What:
Key-value pair attached to objects for identification.
Why:
- Enables selectors, groupings, filters
Gotchas:
- Labels must be unique per key; overuse can make selection inefficient
82. Annotation
What:
Key-value metadata for attaching non-identifying information to resources.
Why:
- Used for tooling, debugging, versioning, etc.
Gotchas:
- Not used in selectors — for humans and systems, not filters
83. Selector
What:
Mechanism for targeting Kubernetes resources via label match.
Why:
- Used by ReplicaSets, Services, NetworkPolicies, etc.
Gotchas:
- MatchLabels and MatchExpressions must match actual pod labels
84. Field Selector
What:
Targets resources based on resource field values (e.g., metadata.name).
Why:
- Enables precise filtering for imperative commands
Gotchas:
- Limited to built-in fields
85. taint-based Eviction
What:
Evicts pods from nodes when taints are dynamically applied due to resource pressure.
Why:
- Used in node lifecycle and autoscaling
Gotchas:
- Needs tolerations to avoid unwanted eviction
86. Static Pod
What:
Pod defined directly in kubelet via a manifest file on the node.
Why:
- Used for core components (e.g., etcd, kube-apiserver)
Gotchas:
- Not managed by Kubernetes API — shows up as mirror pod
87. Mirror Pod
What:
Read-only representation in API server of a static pod on a node.
Why:
- Provides visibility into static pod state
Gotchas:
- Cannot be deleted from API — delete the static pod file
88. Job BackoffLimit
What:
Maximum number of retries for failed Jobs before being marked failed.
Why:
- Controls job failure policy
Gotchas:
- Set too low = premature failure, too high = retry loops
89. CronJob ConcurrencyPolicy
What:
Specifies how to handle multiple CronJob runs:
- Allow
: run in parallel
- Forbid
: skip if previous is running
- Replace
: stop previous, run new
Why:
- Prevents overlapping jobs where unsafe
Gotchas:
- Default is Allow
— can cause conflict
90. Terminating Pod
What:
A pod in the process of shutting down (due to delete or node eviction).
Why:
- Allows graceful cleanup, PreStop hooks, draining
Gotchas:
- Stuck in Terminating often means volume or finalizer issues
91. CrashLoopBackOff
What:
State when a container fails and Kubernetes waits exponentially longer to restart it.
Why:
- Indicates app bug, misconfig, or readiness probe failure
Gotchas:
- Often confused with LivenessProbe killing the pod — check logs
92. InitContainers Completed / Pending
What:
Pods don’t run main containers until all initContainers finish.
Why:
- Useful for dependency checks (e.g., DB readiness)
Gotchas:
- If one fails, pod will hang forever in Init state