这可能是一个基于好奇心的问题,在谷歌上找不到帮助。
考虑一下用于无头服务的 yaml 的这一部分:
ports:
- port: abcd --> this line
Run Code Online (Sandbox Code Playgroud)
我的疑问是,当无头服务的 cluster-ip 已经是 none(因为它是一组它指向的 pod)时,拥有服务的端口有什么用?服务文档中的 dns 记录指出:
“无头”(无集群 IP)服务还分配了一条 DNS A 记录,用于名称形式为 my-svc.my-namespace.svc.cluster.local 的名称。与普通服务不同,这解析为服务选择的 pod 的 IP 集。客户端应该使用该集合,或者使用该集合中的标准循环选择。
因此,如果分配给无头服务的 dns 仅用于将端点放入 Pod,那么是否有在无头服务中具有端口功能的用例?
我已经看到人们在从无头服务的定义中排除端口值时所面临的问题(这里)。这似乎已被修复。但是,我们真的有无外设服务的端口功能的用例吗?
但是,我们真的有无外设服务的端口功能的用例吗?
恕我直言,是的:因为 a 的概念Service不是“随机 IP 地址”——否则它会被称为DHCPIPAddress. Servicekubernetes 中的 a 的想法是,您可以使用一个或多个元组来使用一些网络功能,(address, protocol, port)就像在非 kubernetes 世界中一样。
因此,如果您不关心 headless 的端口,那可能没问题Service,在这种情况下,可以折腾ports:\n- port: 80\n并称其为平局,但是headless的好处Service是以 kubernetes 本身的方式公开集群外网络资源无法管理。我使用了这个技巧来帮助我们从一个集群过渡到另一个集群,通过创建一个 headless Service,其名称是之前所Deployment期望的,名称ports:与之前所Deployment期望的一样,但指向我控制的 IP,而不是在 SDN 内。
这样做,所有传统的 kuberneteskube-dns和$(SERVICE_THING_HOST)and$(SERVICE_THING_PORT)注入都按预期工作,但抽象了say_HOST暂时位于集群之外的事实。
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |