节点端口在服务yaml中接受3个参数。
既然您所需要的只是将节点上的端口(nodeport)Map到容器上的端口(targetPort),那么为什么我们需要提供服务的端口呢?这是因为Nodeport内部实现在ClusterIP之上吗?
jrcvhitl1#
“Nodeport是在ClusterIP之上内部实现的”-正确。Kubernetes Service定义中的端口用于指定服务将侦听Kubernetes集群内流量的端口。这是将作为服务端点公开给集群中其他Pod的端口。当集群内的客户端对此端口发出请求时,流量将被路由到服务基于其负载均衡算法选择的Pod之一。nodePort用于在节点本身的端口上公开服务,这允许从集群外部访问服务。
kknvjkwl2#
TargetPort是应用程序在容器中运行的实际端口&服务应该将流量转发到的端口号。Port是服务将在内部侦听的端口号,当集群中的一个pod或应用程序想要访问服务时可以使用。正如这里所定义的,对于某些服务,您需要公开多个端口。所以在这个链接中定义的例子中:
TargetPort
Port
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
服务定义公开两个端口:http和https。http端口侦听端口80并将流量转发到pod上的端口9376,而https端口侦听端口443并将流量转发到pod上的端口9377。这就是port与targetPort的不同之处。希望有帮助!
http
https
pod
9376
443
9377
port
targetPort
2条答案
按热度按时间jrcvhitl1#
“Nodeport是在ClusterIP之上内部实现的”-正确。
Kubernetes Service定义中的端口用于指定服务将侦听Kubernetes集群内流量的端口。这是将作为服务端点公开给集群中其他Pod的端口。当集群内的客户端对此端口发出请求时,流量将被路由到服务基于其负载均衡算法选择的Pod之一。
nodePort用于在节点本身的端口上公开服务,这允许从集群外部访问服务。
kknvjkwl2#
TargetPort
是应用程序在容器中运行的实际端口&服务应该将流量转发到的端口号。Port
是服务将在内部侦听的端口号,当集群中的一个pod或应用程序想要访问服务时可以使用。正如这里所定义的,对于某些服务,您需要公开多个端口。所以在这个链接中定义的例子中:
服务定义公开两个端口:
http
和https
。http
端口侦听端口80并将流量转发到pod
上的端口9376
,而https
端口侦听端口443
并将流量转发到pod
上的端口9377
。这就是
port
与targetPort
的不同之处。希望有帮助!