CKA study materials
CKA study resources

CKA (CNCF) flashcards

CKA · Build recall with a focused review session.

32 cards. Read the term and the definition here. The deck at the top of this page is optional.

Static pod manifest directory
On kubeadm control-plane nodes the kubelet reads /etc/kubernetes/manifests and runs every YAML file there as a static pod, named after the manifest file plus the node hostname.
kubeadm join token and hash
Workers join with kubeadm join host:6443 --token id.secret --discovery-token-ca-cert-hash sha256:hash; the hash pins the cluster CA so a stolen token cannot be used against an impostor API server.
Cluster certificate location
kubeadm stores the cluster CA, apiserver, front-proxy and etcd certificates under /etc/kubernetes/pki; kubeadm certs check-expiration reports remaining validity and kubeadm certs renew all reissues them.
RBAC Role versus ClusterRole
A Role grants verbs on resources inside one namespace; a ClusterRole is cluster-scoped and can also be granted within a namespace by binding it with a RoleBinding.
kubectl auth can-i impersonation
kubectl auth can-i get pods --as system:serviceaccount:dev:builder --namespace dev asks the API server whether that identity is allowed, without needing the service account token.
kubeadm upgrade order
Run kubeadm upgrade apply on the first control plane, kubeadm upgrade node elsewhere, and only then drain each node, upgrade kubelet and kubectl packages, and uncordon it.
Pause container
Every pod has a sandbox or pause container that holds the pod's network namespace; the other containers join it, which is why they share one IP address and port space.
Guaranteed QoS class
A pod is Guaranteed only when every container sets CPU and memory requests exactly equal to its limits; such pods are evicted last when a node runs out of resources.
Taint effect NoExecute
NoExecute evicts already-running pods that do not tolerate the taint, while NoSchedule only blocks new scheduling and PreferNoSchedule is a soft hint the scheduler may ignore.
nodeAffinity required versus preferred
requiredDuringSchedulingIgnoredDuringExecution is a hard filter, so no matching node leaves the pod Pending; preferredDuringSchedulingIgnoredDuringExecution adds a weighted score that never blocks scheduling.
Topology spread maxSkew
maxSkew is the largest permitted difference in pod count between topology domains; whenUnsatisfiable DoNotSchedule makes it a hard constraint, while ScheduleAnyway only biases the scheduler's scoring.
DaemonSet automatic tolerations
The DaemonSet controller adds tolerations for node.kubernetes.io/not-ready, unreachable, disk-pressure, memory-pressure, pid-pressure and unschedulable, so its pods still run on cordoned or pressured nodes.
PriorityClass preemption
Pods reference a PriorityClass by name; when a higher-value pod cannot be scheduled, the scheduler may evict lower-priority pods on a node to free capacity for it.
RollingUpdate maxSurge and maxUnavailable
maxSurge caps how many pods above the desired replica count may exist during an update and maxUnavailable caps how many may be unavailable; both are integers or percentages and default to 25%.
NodePort default range
Services of type NodePort allocate a port from 30000-32767 on every node by default; the API server flag --service-node-port-range changes that range and requires an API server restart.
Headless Service
Setting clusterIP: None makes a Service headless: no virtual IP is allocated and DNS returns one A or AAAA record per ready backing pod, which StatefulSets rely on for stable per-pod names.
Service DNS name format
A Service resolves as service.namespace.svc.cluster.local, or as the bare service name from inside the same namespace; the search domains in /etc/resolv.conf supply the remaining suffixes.
NetworkPolicy default deny
A NetworkPolicy with an empty podSelector and no rules selects every pod in the namespace and denies the traffic types listed in policyTypes; policies only add allows, never denies.
CNI plugin directory
The kubelet reads /etc/cni/net.d for the CNI configuration and calls the binary in /opt/cni/bin; the plugin must be given the cluster pod CIDR, which must not overlap node networks.
kube-proxy IPVS mode
In ipvs mode kube-proxy programs virtual servers with ipvsadm instead of iptables chains, giving constant-time lookup, but it requires the ip_vs kernel modules loaded on every node.
PV access modes
ReadWriteOnce allows a read-write mount on a single node, ReadOnlyMany on many nodes read-only, ReadWriteMany on many nodes read-write, and ReadWriteOncePod on exactly one pod cluster-wide.
WaitForFirstConsumer binding mode
A StorageClass with volumeBindingMode WaitForFirstConsumer delays provisioning and PV binding until a pod using the PVC is scheduled, so the volume is created in the pod's zone or node.
PV reclaim policy Retain
With persistentVolumeReclaimPolicy Retain, deleting the PVC leaves the PV and its data in Released state; an administrator must clear claimRef and delete the volume manually to reuse it.
StatefulSet volumeClaimTemplates
Each replica gets its own PVC named template-statefulset-ordinal, generated from volumeClaimTemplates, and that PVC survives pod deletion so data persists across rescheduling and recreation.
Default StorageClass annotation
A StorageClass annotated storageclass.kubernetes.io/is-default-class with value true is selected for PVCs that omit storageClassName; only one default class per cluster is honoured at a time.
PVC expansion requirement
Growing a PVC's requested storage only works when the bound StorageClass sets allowVolumeExpansion to true and the CSI driver supports resize; shrinking a PVC is never permitted.
kubectl logs --previous
kubectl logs pod --previous prints the output of the container instance that just crashed, which is essential when a container is in CrashLoopBackOff and the current instance has barely started.
CreateContainerConfigError cause
This state means the kubelet could not build the container configuration, most often because a referenced ConfigMap or Secret, or a specific key inside it, is missing from the namespace.
Node NotReady first checks
On the affected node run systemctl status kubelet and journalctl -u kubelet; a stopped kubelet, a wrong container runtime socket, or an expired client certificate all surface as NotReady in kubectl get nodes.
Stuck Terminating pod
A pod stuck in Terminating usually has a finalizer whose controller no longer exists, or sits on an unreachable node; inspect metadata.finalizers and force-delete only as a last resort.
Check Service endpoints
kubectl get endpointslices -l kubernetes.io/service-name=svc lists the backing pod IPs; an empty list means the Service selector matches no ready pods or the targetPort is wrong.
etcdctl endpoint health
Run etcdctl with --endpoints=https://127.0.0.1:2379 and the --cacert, --cert and --key files from /etc/kubernetes/pki/etcd to check endpoint health and the member list on a control-plane node.