这可能是出于好奇而无法在Google上找到帮助的问题。
请考虑将Yaml的这一部分用于无头服务:
ports:
- port: abcd --> this line
我的疑问是,当无头服务的cluster-ip已经不存在时(因为它指向的是一组Pod),拥有服务端口有什么用? documentation中针对服务的dns记录指出:
“无头”(无群集IP)也为服务分配了DNS A记录,其格式为my-svc.my-namespace.svc.cluster.local。与普通服务不同,这解析为该服务选择的Pod的IP集。希望客户使用该集合,或者使用该集合中的标准循环选择。
因此,如果分配给无头服务的dns仅用于将端点插入到Pod中,那么在无头服务中具有端口功能的任何用例都有吗?
我已经看到人们在将端口值从无头服务(here)的定义中排除时遇到的问题。这似乎已经解决。但是,那么,我们真的有一个无头服务的端口功能用例吗?
答案 0 :(得分:3)
但是,我们真的有一个无头服务的端口功能用例吗?
恕我直言,是的,因为Service
并不是一个“随机IP地址”,否则将被称为DHCPIPAddress
。在kubernetes中使用Service
的想法是,您可以使用一个或多个(address, protocol, port)
元组来使用某些网络功能,就像在非kubernetes世界中一样。
因此,如果您不关心无头Service
的端口(在这种情况下,将ports:\n- port: 80\n
丢掉并称其为平局,但是好处无头Service
的strong>就是以kubernetes本身无法管理的方式公开集群外网络资源。我使用了这个技巧,通过创建无头Service
(其名称与先前的Deployment
相同,并且命名为ports:
,与先前的{{ 1}}是预期的,但指向的是我控制的IP,而不是SDN中的IP。
这样做,所有传统的kubernetes Deployment
和kube-dns
和$(SERVICE_THING_HOST)
注入都能按预期工作,但是抽象了$(SERVICE_THING_PORT)
暂时不在集群之外的事实。