【发布时间】:2017-10-20 18:58:29
【问题描述】:
根据https://kubernetes.io/docs/api-reference/v1.8/#serviceport-v1-core,ServicePort 的port(整数)是“此服务将公开的端口。”,但鉴于它没有指定后端 pod 将侦听的端口(它们是 targetPort,甚至可以是每个后端 pod 定义的名称),它并没有真正指定前端 pod 应该使用的端口连接(那些是nodePort 或自动分配的),我对它做什么指定的内容感到困惑。
负载平衡器(入口?)是否需要公开服务中标识的port,或者它们也可以映射它?
https://kubernetes.io/docs/concepts/services-networking/service/ 的示例并不总是包含端口的 names,即使规范说“ServiceSpec 中的所有端口都必须具有唯一的名称”。 -- 这让我假设一个字符串化的port 也是默认的name。对吗?
ServiceSpec 的文档提到 port 是其 ports 数组的“补丁合并键”。这和之前关于port 是默认name 的观察是否只是法医证据表明port 首先存在但我们希望我们从name 开始? :)
【问题讨论】:
-
这是stackoverflow.com/a/41510604/1105015 的副本吗?也就是说,该答案是否阐明了
port是 LB 必须公开的内容,或者我的问题和答案是否有附加价值? -
@JanosLenart 我最初的评论提到了这个答案。如果有人可以确认
port的角色,我认为这只是一个重复。我们可以在那里或这里这样做,但我认为这是一个没有答案的子问题。 (也就是说,我不关心代表,我只想要答案,我认为其他人也可能:)) -
没有注意到您的第一条评论,抱歉。因此,首先在分配的 ClusterIP 上公开端口列表(编号)。即使您的服务是 LoadBalancer 的 NodePort,它仍然会有一个 ClusterIP。其次,相同的端口号在 ExternalIP 或 LB IP 上公开(如果已分配)。第三,如果您配置一个 Ingress 对象,它的
backend:部分将引用服务。那里的端口可能是一个数字,但也可以是一个字符串 - 这将是服务中列出的端口名称。第四,这个名称对于使用 Prometheus 收集指标也很有趣。
标签: kubernetes