在 GKE 上使用 nginx 入口控制器时负载均衡器的节点不健康

问题描述 投票:0回答:2

我已经按照本指南设置了 nginx 入口控制器。

入口运行良好,我也可以访问

defaultbackend
服务和我自己的服务。

但是,当查看 Google Cloud Console 中创建的对象时,特别是自动创建的负载均衡器对象时,我注意到其他节点的运行状况检查失败:

这是因为入口控制器进程仅在一个节点上运行,所以它是唯一通过健康检查的节点吗? 如何让其他节点通过?

nginx kubernetes google-kubernetes-engine kubernetes-health-check gke-networking
2个回答
13
投票

你的假设是正确的。健康的节点确实是运行 nginx pod 的节点。

您使用的指南使用

externalTrafficPolicy: Local
配置服务。(https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/gce-gke/service.yaml)

该策略将 kube-proxy 配置为永远不会将服务的流量路由到其到达的节点之外。因此,当负载均衡器流量到达没有 nginx pod 的节点时,健康检查失败,负载均衡器停止向它们发送流量。

此配置的优点是避免了到达 nginx pod 的额外网络跃点。如果您需要更多节点来处理流量,您可以确保那里也有 nginx pod 运行。如果您不介意额外的网络跃点,您也可以更改

externalTrafficPolicy


0
投票
使用

externalTrafficPolicy:Local 时,将入口控制器部署为 kind: DaemonSet 而不是 kind: Deployment

© www.soinside.com 2019 - 2024. All rights reserved.