相信大家在进行k8s初学时,遇到了各种各样的port。笔者在学习过程中也是经常将各种port弄混。
下面我针对k8s中常见的几种端口进行了一下梳理:
一、port(针对集群内部)
port是service的端口,即k8s中服务之间的访问端口,通过clusterIP: port可以访问到某个service。
主要作用是集群内其他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(pod暴露的端口)
targetport是pod中容器的端口。
targetport是pod暴露出来的端口,当nginx的一个请求到达service的33306端口时,service就会根据selector中的name,把此请求转发到mysql-pod这个pod的3306端口上。
三、nodeport(集群外部访问端口)
nodeport是容器所在宿主机的端口(实质上也是通过service暴露给了宿主机,而port却没有)
四、 containerPort(container端口)
containerPort是pod内部容器的端口,targetPort映射到containerPort。
==============================================================
参考图:
