我在this guide之后设置了nginx ingress控制器。
入口运行良好,我能够访问defaultbackend
服务和我自己的服务以及。
但是在查看Google Cloud Console中创建的对象时,特别是自动创建的负载均衡器对象,我注意到其他节点的健康检查失败:
这是因为入口控制器进程只在一个节点上运行,所以它是唯一一个通过健康检查的节点吗?我如何让其他节点通过?
我在this guide之后设置了nginx ingress控制器。
入口运行良好,我能够访问defaultbackend
服务和我自己的服务以及。
但是在查看Google Cloud Console中创建的对象时,特别是自动创建的负载均衡器对象,我注意到其他节点的健康检查失败:
这是因为入口控制器进程只在一个节点上运行,所以它是唯一一个通过健康检查的节点吗?我如何让其他节点通过?
2条答案
按热度按时间idfiyjo81#
你的假设是正确的。健康的节点确实是运行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
。8ehkhllq2#
当使用externaltagricPolicy:Local时,将ingress控制器部署为kind:DaemonSet而不是kind:Deployment解决了GCP GKE中的问题