k8s中port、nodePort、targetPort概念的区分
程序员文章站
2022-03-12 11:52:39
...
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的端口
上一篇: k8s中的configMap
下一篇: docker容器内执行SQL文件