k8s服务暴露的端口必须和pod一致吗?

k8s暴露nginx的deploy,类型是nodeport,端口只能是80,其他的端口使用nodeport方式均无法访问。请问这是怎么回事?

img


img

检查iptables规则发现,发送给svc的流量最后被转发到pod的相应端口了,而这个端口就是暴露的端口,所以当这个端口不是80时,就无法访问了。

img

服务访问端口和pod的端口应该不是一回事,即使不一致也能正常访问的。但现实中这二者必须保持一致,有哪位童鞋知道这是为什么吗?

创建svc的时候需要指定容器端口,容器暴露哪个端口 你就需要指定那个端口,svc的端口则可以随便指定