k8s 中的无头服务 (Headless Services)

        有时候我们不需要负载均衡,以及单独的 Service IP。 遇到这种情况,可以通过指定 Cluster IP(spec.clusterIP)的值为 "None" 来创建无头服务。通过无头服务的标签选择器(Label Selector)可以将后端的 Pod 列表返回给调用的客户端。

        对于无头服务,不会为其分配 Cluster IP,kube-proxy 不会处理它们, 而且平台也不会为它们进行负载均衡和路由。 DNS 如何实现自动配置,取决于这些无头服务是否定义了选择器(selectors)。

        1、定义了选择器的无头服务

        对定义了选择器的无头服务,Endpoint 控制器在 API 中创建了 Endpoints 记录, 并且修改 DNS 配置返回所有的 A 记录(IP 地址),通过这些地址可以直接到达 Service 的后端 Pod 上。

        2、没有定义选择器的无头服务

        对没有定义选择器的无头服务,Endpoint 控制器不会创建 Endpoints 记录。 DNS 系统会按照下面的方式查找和配置:

                a)对于 ExternalName 类型的服务,查找其 CNAME 记录。
                b)对所有其他类型的服务,查找与 Service 名称相同的任何 Endpoints 的 A 记录。

你可能感兴趣的:(k8s,kubernetes)