K8s里什么是无头服务headless?

2023-11-5 / 0 评论 / 289 阅读
温馨提示:
本文最后更新于 2023-11-5,已超过半年没有更新,若内容或图片失效,请留言反馈。

『无头服务』即 Kubernetes 中的 Headless Service。Service 是 Kubernetes 对后端一组提供相同服务的 Pod 的逻辑抽象和访问入口。
在某些应用场景中,若需要人为指定负载均衡器,不使用 Service 提供的默认负载均衡的功能,或者应用程序希望知道属于同组服务的其他实例。可以通过无头服务实现。
Kubernetes 提供了 Headless Service 来实现这种功能,即不为 Service 设置 ClusterIP(入口 IP 地址),仅通过 Label Selector 将后端的 Pod 列表返回给调用的客户端。
在nacos集群的资源清单文件,通过selector字段 matchlabels为:app=nacos 。
设置了label selector之后,Kubernetes则会根据label selector查询pod列表 自动创建endpoint列表,将服务名(DNS域名)的解析机制配置为:当客户端访问服务名是,得到的是endpoint列表(而不是一个确定的IP地址)也可以回答

一、Headless Service概念
在某些应用场景中,客户端不需要通过Kubernetes内置的Service实现负载均衡功能,或者需要自行完成对服务后端各个实例的服务发现机制,或者需要自行实现负载均衡功能,可以通过创建特殊的名为“Headless”的服务实现。
Headless Service的概念是这种服务没有入口访问地址(无ClusterIP地址),kube-proxy不会为其创建负载转发规则,而服务名(DNS域名)的解析机制取决于该Headless Service是否设置了Label Selector。
二、Headless Service设置Label Selector
如果Headless Service设置了Label Selector,Kubernetes则将根据Label Selector查询后端Pod列表,自动创建Endpoint列表,将服务名(DNS域名)的解析机制配置为:当客户端访问该服务名时,得到是全部Endpoint列表(而不是一个确定的IP地址)
三、Headless Service未设置Label Selector
如果Headless Service没有设置Label Selector,则Kubernetes不会自动创建对应的Endpoint列表。DNS系统会根据下列条件设置DNS记录。
如果Service类型为ExternalName,则对服务名访问将直接被DNS系统转为Service设置的外部(externalName);
如果系统中存在与Service同名的Endpoint定义,则服务名将被解析为Endpoint定义中的列表,适用于非ExternnalName类型的Service
————————————————
参考的博文https://blog.csdn.net/GaoChuang_/article/details/121313534

评论一下?

OωO
取消