I've just made a test and with no harm you can attach service with or without clusterIP to a statefulset. The only difference is that in case of a service without clusterIP (headless) nslookup will return multiple IPs (IPs of the pods) if you query service by name. In case of a service with clusterIP nslookup returns a virtual (load balanced) IP Querying service name with pod index specified returns pod IP in both cases, and therefore it is a matter of preference and not tech requirements