Kubernetes (k8s) Service Port、TargetPort和NodePort是三个不同的端口类型,它们各自有不同的作用。
- Service Port
Service Port是Service资源对象上暴露给其他容器或者外部的端口号,它代表着Service提供的服务。当一个Service被创建时,需要指定一组端口,这些端口会映射到Pod上的某个端口进行访问。例如,如果你想要使用HTTP协议来访问一个Service,那么可以将Service端口设置为80,这样就可以通过该端口访问该Service。
- TargetPort
TargetPort是Pod上运行的实际应用程序的端口号。在一个Service中,TargetPort是指向真正提供服务的Pod的端口号。当请求到达Service之后,Service会将请求转发到后端的Pod上,而这些Pod上运行的应用程序实际上是监听TargetPort端口的。所以,TargetPort可以看做是Pod内部的端口号。
- NodePort
NodePort是用于在集群外部暴露Service,使得外部网络可以通过该端口访问到Service提供的服务。NodePort是在所有节点上开放的一个静态端口,当请求到达任意一个节点的该端口时,都会被转发到对应的Service的endpoint上。因此,NodePort可以看做是Service在集群外部暴露出来的端口号。在Service创建时,可以指定NodePort的端口号范围,Kubernetes会自动分配一个空闲的端口作为NodePort。
因此,Service Port、TargetPort和NodePort是三个不同的端口类型,在Kubernetes中具有不同的作用,它们一起协作,实现了在Kubernetes集群内部和外部对服务的访问。