Kubernetes 中的port、nodePort、targetPort

Kubernetes 在定义Service的时候有几个Port需要澄清一下,例如下面的Service定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apiVersion: v1  
kind: Service  
metadata:  
  labels:  
    name: app1  
  name: app1  
  namespace: default  
spec:  
  type: NodePort  
  ports:  
  - port: 8080  
    targetPort: 8080  
    nodePort: 30062</strong>  
  selector:  
    name: app1

参考官方的解释

1
2
Port:
The port that the service is exposed on the service’s cluster ip (virsual ip). Port is the service port which is accessed by others with cluster ip.

  Port是在Service IP中使用的,使用Service IP +Port就可以访问到服务

1
2
TargetPort:
The port on the pod that the service should proxy traffic to.

  TargetPort 说的是Pod内的应用暴露的服务端口,Service IP+Port的访问会被代理到这个Target Port

1
2
3
4
5
NodePort:
On top of having a cluster-internal IP, expose the service on a port on each node of the cluster (the same port on each node). You'll be able to contact the service on any

<nodeIP>:nodePort
address. So nodePort is alse the service port which can be accessed by the node ip by others with external ip.

NodePort是Kubernetes集群提供给外部客户端访问Service 使用的端口,一般是主机IP+NodePort 就可以访问到该服务