Which THREE of the following are characteristics of a StatefulSet's volumeClaimTemplates?
PersistentVolumeClaims are namespace-scoped objects, just like StatefulSets, Pods, and Services. When a StatefulSet defines volumeClaimTemplates, the StatefulSet controller creates the resulting PVCs in the same namespace in which the StatefulSet itself is created, ensuring that Pods and their volumes exist in the same Kubernetes namespace. This namespace isolation is a fundamental part of Kubernetes identity and access control: PVs are cluster-scoped, but PVCs cannot cross namespaces, and a Pod can only mount a PVC from its own namespace. Consequently, the PVCs are inevitably co-located with the StatefulSet.
Why this answer
Option B is correct because volumeClaimTemplates generate PersistentVolumeClaims within the same namespace as the owning StatefulSet, since PVCs are namespaced resources and cannot cross namespace boundaries. Option C is correct because each generated PVC follows the naming convention <template-name>-<statefulset-name>-<ordinal>, giving every replica a unique, stable PVC tied to its Pod ordinal. Option D is correct because the core purpose of volumeClaimTemplates is to automatically provision a PersistentVolumeClaim for each StatefulSet replica, ensuring stable per-Pod storage.
Option A is not correct because StatefulSet PVCs are retained by default when a Pod is deleted (only scale-down or deletion with the right policy may remove them), so automatic deletion is not a characteristic. Option E is not correct because storageClassName is optional in a volumeClaimTemplate; if omitted, the cluster's default StorageClass is used.
Exam trap
The trap here is that candidates often assume PVCs are ephemeral like Pods, but StatefulSets intentionally preserve PVCs to guarantee data persistence across Pod lifecycle events.