kubenetes中port、targetPort、nodePort、containerPort的区别与联系
首先给出一张kubenetes结构图:
-
containerPort
containerPort是在pod控制器中定义的、pod中的容器需要暴露的端口。
Pod中容器暴露的端口
-
targetPort
targetPort是pod上的端口,从port/nodePort下来的数据,经过kube-proxy流入到后端pod的targetPort上,最后进入容器。
Pod暴露的端口
-
port
port是暴露在cluster (集群网络)上的端口,提供了集群内部客户端访问service的入口,即clusterIP:port。mysql容器暴露了3306端口(参考DockerFile),集群内其他容器通过33306端口访问mysql服务,但是外部流量不能访问mysql服务,因为mysql服务没有配置NodePort。
service暴露在集群中的端口
-
nodePort
nodePort提供了集群外部客户端访问service的一种方式,即nodeIP:nodePort提供了外部网络访问k8s集群中service的入口。
集群暴露在外网中的端口
参考
KUBERNETES NODEPORT、TARGETPORT、PORT、CONTAINERPORT图解
K8s易混点辨析:nodePort、port、targetPort、containerPort