serviceName must reference a Headless Service (clusterIP: None). This enables stable DNS for each pod.volumeClaimTemplates creates a PVC per pod automatically. pod-0 gets data-postgres-0, pod-1 gets data-postgres-1. They survive restarts.statefulset-name-ordinal. postgres-0, postgres-1, postgres-2.clusterIP: None. DNS returns individual pod IPs instead of a single virtual IP.postgres-0.postgres.default.svc.cluster.local. Pods can connect to specific replicas by name.