k8s中port、nodePort、targetPort概念的区分

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

port是service的端口

targetport是pod(也就是容器)的端口

nodeport是容器所在node节点的端口(实质上也是通过nodeport类型的service暴露给集群节点,但port没有service类型)

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

  • port

port的主要作用是集群内其他pod访问本pod时,需要一个port,如nginx的pod访问mysql的pod,那么mysql的pod的service可以如下定义:

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  ports:
  - port: 33306
    targetPort: 3306
  selector:
   name: mysql-pod

由此可以这样理解,port是service的port,nginx访问service的3306端口。

  • targetport

同样,targetport是pod暴露出来的端口,当nginx的一个请求到达service的3306端口时,service就会根据selector中的name,把此请求转发到mysql-pod这个pod的3306端口上。

  • nodeport

nodeport就很好理解了,它是集群外客户端访问集群内服务时所访问的端口,比如客户访问下面的集群中的nginx,就是这样的方式。

apiVersion: v1 
kind: Service 
metadata: 
  name: nginx-service 
spec: 
  type: NodePort      # 有配置NodePort,外部流量可访问k8s中的服务 
  ports: 
  - port: 30080       # 服务访问端口 
    targetPort: 80    # 容器端口 
    nodePort: 30001   # NodePort 
  selector: 
    name: nginx-pod 

3. 总结

  • nodeport是集群外流量访问集群内服务的端口类型,比如客户访问nginx,apache

  • port是集群内pod互相通信用的端口类型,比如nginx访问mysql,而mysql是不需要让集群外部客户端访问到的

  • targetport,顾名思义目标端口,也就是最终端口,即pod的端口

猜你喜欢

转载自blog.csdn.net/yjk13703623757/article/details/108530820