kubernetes中的入口是否占用节点';s端口
我正在读《库伯内特斯》。kubernetes中的入口是否占用节点';s端口,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,我正在读《库伯内特斯》。 如果我理解正确,入口将把节点的流量转发给Kubernetes中的服务。例如,当HTTP请求发送到节点的端口80时,入口将把该数据转发到服务。 我的问题是: 这是否意味着入口将占用节点的端口80?那么如果我有另一个应用程序想使用端口80会导致错误吗 如果我的第一个问题的答案是“是”,那么是否可以配置入口以侦听节点上的其他端口 入口是一种配置或路由映射,但您需要一个入口控制器来完成实际的路由部分 在您看到的示例中,它给出了一条规则,将http路径/testpath映射到端口
如果我理解正确,入口将把节点的流量转发给Kubernetes中的服务。例如,当HTTP请求发送到节点的端口80时,入口将把该数据转发到服务。
我的问题是:
入口是一种配置或路由映射,但您需要一个入口控制器来完成实际的路由部分
在您看到的示例中,它给出了一条规则,将http路径
/testpath
映射到端口80
上名为test
的服务;因此,特定服务可以满足发送到/testpath
url的请求。如果您对入口感兴趣,我假设您对将外部流量引入集群感兴趣。因此,有必要提供nodeport类型的服务,以允许入口通过节点上的端口访问pod/容器上的端口。是的,这意味着它会占用节点上的端口。但是,这不是您感兴趣的一部分,因为节点的端口与pod上的端口不同。
这提供了一个很好的示例,说明节点报告通常是如何工作的
如果您打算在集群中使用不同的应用程序。您最好使用两个单独的nodePort服务定义两个入口,这两个服务自动管理每个k8s节点上的端口管理。
如果您真的对手动设置感兴趣,那么最好使用这样的解决方案:
在k8s中,没有端口x80xx已经被另一个应用程序使用的情况。 现在让我解释一下原因: 正如您所知,您必须有一个服务来公开在k8s集群中运行的应用程序/POD。在这里,您创建的每个服务都将有一个唯一的新k8s集群内部ip分配给它。因此,如果您有另一个具有相同端口的服务,您将不会收到该错误(端口x80xx已被另一个应用程序使用)。因为只有当两个应用程序尝试获取相同的ip和端口(套接字)时,才会引发该特定错误 现在进入入口点: 基本上,ingress是基于k8s集群中运行的ingress控制器吊舱实现的,是的,它有一个服务。因此,您可以将其分配给任何服务端口(有预定义的端口),因为它将获得分配给它的新集群ip 现在将您的服务公开到集群之外: 要在集群外部公开服务,可以使用serviceType负载平衡器和nodeport 节点端口:节点端口是集群中每个节点上的开放端口。由于这是节点(主机)的端口,您不能将一个端口分配给多个服务,因为这将不会有不同的ip而不是单个本地主机ip 回答您的问题:
是的,您可以使用任何其他端口(通常为30000–32767)作为节点端口来公开入口服务,在这种情况下,您必须使用类似
url的urlhttp://host_machin_IP:NodePort
那么对节点端口的http请求也是端口80?在文档示例中,传入的请求只是一个普通的http请求:“/far”。这是否意味着,在该特定示例中,入口的节点端口数为80@欧阳维杰 示例ingress文档没有定义,但大多数默认值为80和443。默认服务节点端口
范围可在kubeapi启动时配置。那么为什么使用ingress的示例不需要指定节点端口呢。入口的默认节点端口是否为80?
apiVersion: v1
kind: Service
metadata:
name: my-nodeport-service
spec:
selector:
app: my-app
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30036
protocol: TCP