1. 三种类型端口所应用的位置不同

2. 三种类型端口的作用不同

  • port
port的主要作用是集群内其他pod访问本pod时,需要一个port,如nginx的pod访问mysql的pod,那么mysql的pod的service可以如下定义:
由此可以这样理解,port是service的port,nginx访问service的3306端口。
  • targetport
容器的端口(最根本的端口入口),与制作容器时暴露的端口一致(DockerFile中EXPOSE)。
targetport是pod暴露出来的端口,当nginx的一个请求到达service的3306端口时,service就会根据selector中的name,把此请求转发到mysql-pod这个pod的3306端口上。
  • nodeport
nodeport就很好理解了,它是集群外客户端访问集群内服务时所访问的端口,比如客户访问下面的集群中的nginx,就是这样的方式。

3. 总结

  • port:service暴露在cluster ip上的端口,clusterIP:port 是提供给集群内部客户访问service的入口
  • nodePort:首先,nodePort是kubernetes提供给集群外部客户访问service入口的一种方式(另一种方式是LoadBalancer),所以,nodeIP:nodePort 是提供给集群外部客户访问service的入口
  • targetPort:targetPort是pod上的端口。从port和nodePort上来的数据,经过kube-proxy流入到后端pod上的targetPort,最终进入容器
  • port、nodePort:总的来说,port和nodePort都是service的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod中的容器
Dockerfile: ENTRYPOINT和CMD的区别Python执行时间的计算方法