Headless service并不对外提供Cluster IP能力,它提供的是服务发现功能,通过dns解析svc域名,得到对应的endpoint的Pod地址。最终由客户端自行决定如何处理这些Pod地址。
除此之外,Headless service 后端Pod每个都具备对应的域名,可以直接通过域名来相互访问,因此在 statefulset 中用这种service
# svc-headless.yaml
apiVersion: v1
kind: Service
metadata:
name: slb-s4
namespace: default
spec:
selector:
app: nginx
release: stable
partition: website
tier: slb
clusterIP: None
ports:
- name: http
port: 80
targetPort: 80
[root@master_01_vm_160_10 ~]# dig +short -t A slb-s1.default.svc.cluster.local @10.100.0.2
10.100.138.11
[root@master_01_vm_160_10 ~]# dig +short -t A slb-s4.default.svc.cluster.local @10.100.0.2
10.200.4.9
10.200.4.8
10.200.5.10
10.200.5.11
10.200.3.10