k8s 中 port nodePort targetPort概念的区分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s 中 port nodePort targetPort概念的区分相关的知识,希望对你有一定的参考价值。

不废话,直接开始比较

1:三个类型端口所应用位置的不同

port是service的的端口
targetport是pod也就是容器的端口
nodeport是容器所在宿主机的端口(实质上也是通过service暴露给了宿主机,而port却没有)

2:在作用上

port
的主要作用是集群内其他pod访问本pod的时候,需要的一个port,如nginx的pod访问mysql的pod,那么mysql的pod的service可以如下定义,由此可以这样理解,port是service的port,nginx访问service的33306

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

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


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

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的端口。

以上是关于k8s 中 port nodePort targetPort概念的区分的主要内容,如果未能解决你的问题,请参考以下文章

K8s暴露内部服务的多种方式

k8s记录-不同集群服务互联

kubernetes各种port关系

k8s-暴露容器应用

K8S之创建deployment关联NodePort服务

死磕k8s之calico-nodeport