1. targetPort 容器的端口
容器真正暴露的端口(使用DockerFile中的EXPOSE),targetPort是pod上的端口,从port和nodePort上来的流量,经过kube-proxy流入到后端pod的targetPort上,最后进入容器内。
例如docker.io官方的nginx暴露的是80端口。docker.io官方的nginx容器的DockerFile。
2. port
k8s集群内部服务之间相互访问service的端口。
kubernetes中的服务之间访问的端口。有些服务可能不需要被外界访问,比如数据库,尽管mysql容器暴露了3306端口参考mysql的DockerFile,但是集群内其他容器需要通过33306端口访问该服务,外部机器不能访问mysql服务,因为他没有配置NodePort类型。
3. nodePort
k8s集群中发发布完service之后,如果需要外部访问,nodePort是一种访问方式,即nodePort是提供给外部流量访问k8s集群中service使用的端口。
比如一个Web应用需要被其他用户访问,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他机器就可以通过浏览器访问scheme://node:30001访问到该服务,例如http://node:30001。