Headless Service — direct Pod DNS without load balancing.
1apiVersion: v12kind: Service3metadata:4 name: postgres-headless5spec:6 clusterIP: None # Headless!7 selector:8 app: postgres9 ports:10 - port: 543211 targetPort: 543212---13apiVersion: apps/v114kind: StatefulSet15metadata:16 name: postgres17spec:18 serviceName: postgres-headless19 replicas: 320 selector:21 matchLabels:22 app: postgres23 template:24 metadata:25 labels:26 app: postgres27 spec:28 containers:29 - name: postgres30 image: postgres:1531 ports:32 - containerPort: 5432
1# DNS resolution2# Headless: postgres-0.postgres-headless.ns.svc.cluster.local3# postgres-1.postgres-headless.ns.svc.cluster.local4# postgres-2.postgres-headless.ns.svc.cluster.local56# Regular ClusterIP: postgres.ns.svc.cluster.local (round-robin)78# Test DNS9kubectl exec -it my-pod -- nslookup postgres-headless10kubectl exec -it my-pod -- nslookup postgres-0.postgres-headless1112# Check endpoints13kubectl get endpoints postgres-headless14kubectl describe endpoints postgres-headless1516# Application connection string17postgresql://postgres-0.postgres-headless:5432/mydb18postgresql://postgres-1.postgres-headless:5432/mydb19postgresql://postgres-2.postgres-headless:5432/mydb
Use cases: