This sheet covers the Certified Kubernetes Administrator (CKA) exam from the Cloud Native Computing Foundation (CNCF) and The Linux Foundation, currently aligned to Kubernetes v1.34. CKA is a two-hour, performance-based exam: every task is solved live from a terminal against a real cluster, so the bar is not recall but doing, fast, with only the official kubernetes.io docs open. The five domains weight toward Troubleshooting (30%) and Cluster Architecture (25%), so command-line fluency in diagnosing failures and building clusters with kubeadm matters more than memorizing definitions. Use each table as a checklist of the exact objects, flags, and recovery moves the exam expects you to reach for under time pressure.
What This Cheat Sheet Covers
This topic spans 24 focused tables and 245 indexed concepts, 240 flashcards, 8 practice tests with 330 questions. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
Table 1: Storage Classes and Dynamic Volume Provisioning
CKA exam domain Storage (10%): implement storage classes and dynamic volume provisioning. Covers the StorageClass object and the fields that drive on-demand volume creation; the PersistentVolume and PersistentVolumeClaim objects, access modes and standalone reclaim policies are covered in Table 2.
| Concept | Example | Description | |
|---|---|---|---|
A user creates a PVC with storageClassName: fastand a volume is auto-created to match | Creates storage on demand when a PVC is made, so admins do not pre-create PVs by hand. • Built entirely on the StorageClass API object • Static provisioning is the opposite: an admin makes PVs ahead of time | ||
kind: StorageClassprovisioner: ebs.csi.aws.com | The object that describes a class of storage and how to provision it. Its name is how a PVC requests it. • Holds provisioner, parameters, reclaimPolicy, volumeBindingMode, allowVolumeExpansion• Most fields are immutable after creation | ||
provisioner: ebs.csi.aws.comprovisioner: kubernetes.io/no-provisioner | The required field naming the volume plugin (CSI driver) that creates the volume. Determines what backend is used. • Internal names start with kubernetes.io; external ones do not• kubernetes.io/no-provisioner means no dynamic provisioning | ||
kubectl patch storageclass gold -p'{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' | The class used when a PVC omits storageClassName entirely, set by the is-default-class annotation.• Needs the DefaultStorageClass admission controller enabled • If several are marked default, the most recently created one wins | ||
volumeBindingMode: WaitForFirstConsumer(default is Immediate) | Controls WHEN the volume binds and provisions. • Immediate (default): at PVC creation, before any Pod, so topology may not fit• WaitForFirstConsumer: waits for a Pod, then provisions in that Pod's zone | ||
allowVolumeExpansion: truethen edit the PVC to request a larger size | Lets a PVC be grown later by editing its requested size; must be true first.• Resizes the existing volume, never creates a new one • Shrinking a PVC below its current size is not supported | ||
reclaimPolicy: Retain# default value is Delete | The policy a dynamically provisioned PV inherits from its class; defaults to Delete if unset.• Delete removes the PV and the backend storage when the PVC is deleted• This is the class default, not the same as patching a single PV | ||
parameters: type: gp3 encrypted: "true" | Provisioner-specific key value settings passed to the driver when it creates a volume. • Accepted keys differ by provisioner; values are quoted strings • At most 512 parameters per class | ||
spec: storageClassName: "" | An empty string explicitly disables dynamic provisioning for that PVC, so it binds only to a no-class PV. • Different from omitting the field, which triggers the default class • A PVC already set to "" is not changed when a default appears | ||
allowedTopologies: - matchLabelExpressions: - key: topology.kubernetes.io/zone | Restricts which zones a volume may be provisioned in, used with WaitForFirstConsumer.• Replaces older zone and zones parameters • Matches node topology labels such as the zone key |