为什么Nodeport在Kubernetes中需要一个“port”?

mzaanser  于 2023-04-29  发布在  Kubernetes
关注(0)|答案(2)|浏览(182)

节点端口在服务yaml中接受3个参数。

  • 港口
  • targetPort
  • nodePort

既然您所需要的只是将节点上的端口(nodeport)Map到容器上的端口(targetPort),那么为什么我们需要提供服务的端口呢?
这是因为Nodeport内部实现ClusterIP之上吗?

jrcvhitl

jrcvhitl1#

“Nodeport是在ClusterIP之上内部实现的”-正确。
Kubernetes Service定义中的端口用于指定服务将侦听Kubernetes集群内流量的端口。这是将作为服务端点公开给集群中其他Pod的端口。当集群内的客户端对此端口发出请求时,流量将被路由到服务基于其负载均衡算法选择的Pod之一。
nodePort用于在节点本身的端口上公开服务,这允许从集群外部访问服务。

kknvjkwl

kknvjkwl2#

TargetPort是应用程序在容器中运行的实际端口&服务应该将流量转发到的端口号。
Port是服务将在内部侦听的端口号,当集群中的一个pod或应用程序想要访问服务时可以使用。
正如这里所定义的,对于某些服务,您需要公开多个端口。所以在这个链接中定义的例子中:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app.kubernetes.io/name: MyApp
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 9376
    - name: https
      protocol: TCP
      port: 443
      targetPort: 9377

服务定义公开两个端口:httphttpshttp端口侦听端口80并将流量转发到pod上的端口9376,而https端口侦听端口443并将流量转发到pod上的端口9377
这就是porttargetPort的不同之处。
希望有帮助!

相关问题