【问题标题】:What does the `port` property of a ServicePort object _mean_?ServicePort 对象的“端口”属性是什么意思?
【发布时间】:2017-10-20 18:58:29
【问题描述】:

根据https://kubernetes.io/docs/api-reference/v1.8/#serviceport-v1-coreServicePortport(整数)是“此服务将公开的端口。”,但鉴于它没有指定后端 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


【解决方案1】:

ServiceServicePort(在其spec 中)的数字port 用于以下地方:

  • 服务在spec.clusterIP:spec.ports[*].port 公开(除非clusterIP 设置为"None"
  • 服务公开在spec.loadBalancerIP:spec.ports[*].port(如果您指定type: LoadBalancer
  • 这是targetPortServicePort默认

【讨论】:

    猜你喜欢
    • 2018-02-18
    • 2019-10-31
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多