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

    Port:
    service暴露在cluster ip上的端口,:port 是提供给集群内部客户访问service的入口。

    nodePort:
    nodePort是kubernetes提供给集群外部客户访问service入口的一种方式(另一种方式是LoadBalancer),所以,:nodePort 是提供给集群外部客户访问service的入口。

    targetPort:
    targetPort是pod上的端口,从port和nodePort上到来的数据最终经过kube-proxy流入到后端pod的targetPort上进入容器。

    总的来说,port和nodePort都是service的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod上的容器内。