在阅读kubernetes文档时,我注意到NodePort类型服务始终会自动创建一个ClusterIP,针对NodePort的入口流量将被路由到ClusterIP。我的问题是为什么这是必要的?为什么kubeproxy无法通过转发直接为此NodePort进行负载平衡? ClusterIP似乎并不需要支持NodePort,它似乎会带来额外的开销。
答案 0 :(得分:0)
即使类型Service
的{{1}}并没有直接联系Pod,它们仍然通过服务的群集IP及其关联的Pod选择器规则。我认为,使用更新的kubernetes,您还可以影响流量是循环传输还是加权分布式传输,如果NodePort直接与Pods联系,这将是行不通的。
此外,NodePorts在集群的每个成员上打开,但是-在大多数情况下-您没有Pod在集群的每个成员上运行群集,因此它仍然必须使用服务IP路由到实际节点,服务中Pod可以在该节点上为该流量提供服务。
NodePorts的思想是一种将“外部世界”与“集群世界”联系起来的机制,而不是捷径绕开iptables或ipvs的机制