$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE external-name-svc ExternalName <none> hub.docker.com <none> 7s
# 获取 DNS 地址信息 $ kubectl get pod -n kube-system -o wide | grep dns coredns-7c6c659fcf-fk7ql 1/1 Running 0 29m 10.244.2.2 k8s-master <none> <none>
# 解析域名 i 记录 $ dig -t A external-name-svc.default.svc.cluster.local. @10.244.2.2 ;; ANSWER SECTION: external-name-svc.default.svc.cluster.local. 5 IN CNAME hub.docker.com. hub.docker.com. 5 IN CNAME elb-default.us-east-1.aws.dckr.io. elb-default.us-east-1.aws.dckr.io. 5 IN CNAME us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com. us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com. 5 IN A 3.211.28.26 us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com. 5 IN A 3.217.79.149 us-east-1-elbdefau-1nlhaqqbnj2z8-140214243.us-east-1.elb.amazonaws.com. 5 IN A 54.147.41.176
当不需要负载均衡和独立 Service IP 时,可以指定 spec.clusterIP 为 None来创建 Headless Service。这类 Service 并不会分配 Cluster IP,kube-proxy 也不会处理它们,而且平台也不会其对进行负载均衡和路由。虽然没有svc,但依旧可以通过访问域名,路由到不同Pod上
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE myapp-headless-svc ClusterIP None <none> 80/TCP 7s
# 解析域名 i 记录 $ dig -t A myapp-headless-svc.default.svc.cluster.local. @10.244.2.2 ;; ANSWER SECTION: myapp-headless-svc.default.svc.cluster.local. 5 IN A 10.244.1.6 myapp-headless-svc.default.svc.cluster.local. 5 IN A 10.244.0.4 myapp-headless-svc.default.svc.cluster.local. 5 IN A 10.244.1.5 myapp-headless-svc.default.svc.cluster.local. 5 IN A 10.244.0.5 myapp-headless-svc.default.svc.cluster.local. 5 IN A 10.244.1.7