Kubernetes已在内部安装, nginx入口
在多个节点上具有多个Pod的服务 所有这些节点都作为nginx入口。
问题是,当来自负载平衡器的请求可以跳到另一个具有pod的工作程序时,这会导致工作程序网络内部发生不必要的流量,我想在请求从外部传入到入口时强制执行该操作, 入口始终选择同一节点上的Pod,以防随后没有Pod 可以转发到其他节点。
此图像或多或少代表了我的情况。 example
我遇到的问题是蓝色,我希望是红色的情况。
我看到存在“ externalTrafficPolicy:本地”,但这仅适用于 serviceType nodePort / loadBalancer,nginx入口尝试使用“ clusterIP”进行连接,因此将跳过此功能。 有一种方法可以使此功能适用于clusterIP或类似的东西?我开始阅读有关istio和linkerd的文章,它们看起来是如此强大,但是我看不到任何参数可以配置此工作流程。
答案 0 :(得分:1)
您必须使用NodeSelector
部署 Ingress Controller 才能将其部署到名为ingress
或所需的特定节点上:这样您就可以继续创建LB在这些节点IP上使用端口80和443上的简单运行状况检查(以在出现节点故障的情况下更新区域),甚至使用自定义运行状况检查端点,甚至更好。
正如您所说,externalTrafficPolicy=Local
仅适用于负载均衡服务:处理本地群集很困难:)