kubernets几种端口(port、targetport、contaierport、hostport、nodeport)的区别和关联
# kubernets几种端口(port、targetport、contaierport、hostport、nodeport)的区别和关联
1.这两个一般用在应用yaml (opens new window)描述文件中,起到的作用类似于docker -p选项
containerport: 容器需要暴露的端口,service的targetPort会映射到pod里的这个containerPort。
hostport: 容器暴露的端口映射 (opens new window)到的物理机的主机端口。
2.这两个一般用在service中,service 的类型为cluster ip时候:
port: service中clusterip 对应的端口
targetport: clusterIP作为负载均衡 (opens new window), 后端目标实例(容器)的端口。targetPort对应pod里的containerPort。
3.这一个一般用在service中,service的类型为nodeport:cluster ip 只能集群内部访问(源与目标需要满足两个条件: kube-proxy正常运行,跨主机容器网络通信正常),nodeport会在每个kubelet节点的宿主机开启一个端口,用于应用集群外部访问。
4.hostport和nodeport的区别?
(1)hostport是将pod的端口映射到宿主机上。
(2)nodeport是将service的端口映射到集群中的每个宿主机上。
关于端口的总结
快速总结一下哪些端口和标签应该匹配:
Service selector 应该和 Pod 的标签匹配;
Service 的 targetPort 应该和 Pod 里面容器的 containerPort 匹配;
Service 端口可以是任意数字。多个 Service 可以使用同一个端口,因为不同的 Service 分配的 IP 地址不同;
Ingress 的 service.port 应该和 Service 的 port 匹配;
Service 的名称应该和 Ingress 中 service.name 字段匹配;
# port
port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service
# nodePort
nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service。
# hostport
容器暴露的端口映射 (opens new window)到的物理机的主机端口。
# targetPort
targetPort是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器。
# containerPort
containerPort是pod内部容器的端口,targetPort映射到containerPort。
图解
K8S配置中的port、targetPort、nodePort和containerPort区别 https://blog.51cto.com/wutengfei/2482187 (opens new window)