kubernetes 无头服务真的需要波特吗?

1l5u6lss  于 2023-02-15  发布在  Kubernetes
关注(0)|答案(2)|浏览(107)

这可能是一个基于好奇心的问题,在谷歌上找不到帮助。
考虑无头服务的这部分yaml:

ports:
 - port: abcd  --> this line

我的疑问是,当headless服务的cluster-ip已经为空时(因为它指向的是一组pod),为服务提供端口有什么用呢?服务文档中的dns记录指出:
“Headless”(无群集IP)服务还分配了一个DNS A记录,用于my-svc. my-namespace. svc. cluster. local格式的名称。与普通服务不同,这解析为服务所选Pod的IP集。客户端应使用该集,否则使用从该集中进行的标准循环选择。
因此,如果分配给headless服务的dns仅用于将端点连接到pod,那么在headless服务中是否存在端口功能的用例?
我看到人们在从headless服务(here)的定义中排除端口值时遇到的问题。这个问题似乎已经解决了。但是,我们真的有headless服务的端口功能的用例吗?

92dk7w1h

92dk7w1h1#

但是,我们真的有无头服务的端口功能的用例吗?
恕我直言,是的:因为Service的概念不是“随机IP地址”--否则它将被称为DHCPIPAddress。kubernetes中Service的概念是,您可以使用(address, protocol, port)的一个或多个元组来使用某些网络功能,就像在非kubernetes世界中一样。
因此,如果您不关心headless Service的端口,也可以这样做,在这种情况下,将ports:\n- port: 80\n扔进去,称之为平局。但是无头X1 M6 N1 X的好处是以Kubernetes本身无法管理的方式暴露额外的群集网络资源。我使用了这个技巧来帮助我们从一个集群过渡到另一个集群,方法是创建一个无头的Service,它的名称与以前的Deployment所期望的名称相同,与之前的Deployment预期的名称为ports:,但指向我控制的IP,不在SDN内。
这样,所有传统的kubernetes kube-dns$(SERVICE_THING_HOST)$(SERVICE_THING_PORT)注入都按预期工作,但抽象掉了所述_HOST暂时位于集群之外的事实。

gijlo24d

gijlo24d2#

我遇到了同样的问题,这里是答案:www.example.comhttps://github.com/kubernetes/kubernetes/issues/20488#issuecomment-178682638
引文:
"端口"与"目标端口"不同的概念不适用于无头服务。端口转换作为第4层负载平衡的一部分发生,但无头实际上意味着"没有负载平衡器"......这就是为什么我们要求X和Y在无头服务中相同。

相关问题