gpt4 book ai didi

kubernetes - Kubernetes中的入口是否占用了节点的端口

转载 作者:行者123 更新时间:2023-12-02 11:36:11 25 4
gpt4 key购买 nike

我正在阅读Kubernetes document about ingress
如果我理解正确,则Ingress会将节点的流量转发到Kubernetes中的服务。例如,当HTTP请求到节点的端口80时,入口将把该数据转发到服务。
我的问题是:

  • 这是否意味着入口将占用节点的端口80?那么如果我有另一个应用程序想要使用端口80会导致错误?
  • 如果第一个问题的答案为"is",则可以配置一个Ingress来侦听节点上的另一个端口。
  • 最佳答案

    在k8s中,没有类似的端口x80xx已经被另一个应用程序使用的情况。
    现在让我解释一下原因:
    如您所知,您必须有一个服务来公开在k8s集群中运行的应用程序/ Pod。在这里,您创建的每个服务都会为其分配一个唯一的新k8s集群内部ip。因此,如果您有另一个具有相同端口的服务,您不会收到该错误(端口x80xx已被其他应用程序使用)。因为只有两个应用程序尝试获取相同的ip和port(socket)时,才会引发该特定错误。
    现在进入切入点:
    基本上入口是基于在k8s集群中运行的入口 Controller Pod实现的,并且它具有服务。因此,您可以将其分配给任何服务端口(有预定义的端口),因为它将为它分配新的集群ip。
    现在将您的服务公开到集群之外:
    要将服务公开到群集之外,可以使用serviceType负载均衡器和nodeport。
    NodePort: NodePort是群集每个节点上的开放端口。由于这是节点(主机)的端口,因此您无法将一个端口分配给多个服务,因为它将没有不同的ip而不是一个本地主机ip。
    您的问题的答案:

  • 这是否意味着入口将占用节点的端口80?那么如果我有另一个应用程序想要使用端口80会导致错误?

  • 是的,如果您使用nodePort 80公开入口 Controller 服务,则其他任何服务都不能使用此端口( 端口x80xx已被其他应用程序使用。)。实际上您不能这样做,因为kubernetes仅允许nodePort的范围在上述范围内超过30000。
  • 如果第一个问题的答案为"is",则可以配置一个Ingress来侦听节点上的另一个端口。

  • 是的,您可以使用任何其他端口(通常为30000–32767)作为NodePort公开您的入口服务,在这种情况下,您必须使用 http://host_machin_IP:NodePort这样的url。

    关于kubernetes - Kubernetes中的入口是否占用了节点的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64575391/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com