首页/云/Kubernetes 速查/StatefulSet 与 Headless Service 的 DNS
本包目录(307 条)

StatefulSet 与 Headless Service 的 DNS

Headless Service(clusterIP: None)为每个 Pod 提供独立 DNS 记录,客户端可直连具体实例;这是有状态集群互相发现的基础。

Kubernetes 速查云更新于 2026-10-12

Headless Service

Headless Service
apiVersion: v1
kind: Service
metadata:
  name: db-headless
spec:
  clusterIP: None
  selector:
    app: db
  ports:
    - name: pg
      port: 5432

DNS 记录验证

DNS 记录验证
kubectl run dns-test --rm -it --image=busybox:1.36 --restart=Never -- sh
# 容器内:
nslookup db-headless.prod.svc.cluster.local
nslookup db-0.db-headless.prod.svc.cluster.local
nslookup db-1.db-headless.prod.svc.cluster.local
Pod 级 DNS 形如 <pod>.<headless-svc>.<ns>.svc.cluster.local;Headless 的 DNS 直接返回 Pod IP 列表,由客户端自行选择。

易错点

  • 普通 Service 的 DNS 返回的是虚拟 IP,无法定位单个实例;有状态集群互联必须用 Headless
  • Pod 未 Ready 时默认不会出现在 Headless 的可用后端列表里(publishNotReadyAddresses 可改)

数据来源与参考

  • Kubernetes 官方文档 · StatefulSet(Stable Network ID)/ Headless Services
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌