Google kubernetes负载平衡器不健康节点故障排除
我想知道在排除Google负载平衡器为何会将集群内的节点视为不健康节点的故障时,应该采取哪些步骤 使用GoogleKubernetes,我有一个有3个节点的集群,所有部署都在运行就绪性和活动性检查。所有人都报告说他们是健康的 负载平衡器由helm nginx ingress制成: 它被用作集群内所有部署应用程序的单一入口 目视扫描入口控制器日志:Google kubernetes负载平衡器不健康节点故障排除,kubernetes,google-kubernetes-engine,kubernetes-helm,kubernetes-ingress,Kubernetes,Google Kubernetes Engine,Kubernetes Helm,Kubernetes Ingress,我想知道在排除Google负载平衡器为何会将集群内的节点视为不健康节点的故障时,应该采取哪些步骤 使用GoogleKubernetes,我有一个有3个节点的集群,所有部署都在运行就绪性和活动性检查。所有人都报告说他们是健康的 负载平衡器由helm nginx ingress制成: 它被用作集群内所有部署应用程序的单一入口 目视扫描入口控制器日志: kubectl logs <ingress-controller-name> 但是,使用谷歌控制台,我浏览到负载平衡器的详细信息,可以
kubectl logs <ingress-controller-name>
但是,使用谷歌控制台,我浏览到负载平衡器的详细信息,可以看到以下内容:
上面两个节点似乎有问题,尽管我找不到问题
此时,负载平衡器仍然通过第三个正常节点提供流量服务,但它偶尔会删除该节点,并显示以下内容:
此时,没有流量通过负载平衡器,因此节点上的所有应用程序都无法访问
任何帮助,我应该期待解决这将是伟大的
----19年11月17日编辑
以下是通过helm传递的nginx入口配置:
ingress:
enabled: true
rbac.create: true
controller:
service:
externalTrafficPolicy: Local
loadBalancerIP: ****
configData:
proxy-connect-timeout: "15"
proxy-read-timeout: "600"
proxy-send-timeout: "600"
proxy-body-size: "100m"
这是预期的行为。使用配置服务,以便只有存在服务吊舱的节点才会接受流量。这意味着,任何没有接收服务流量的服务pod的节点都将丢弃数据包 GCP网络负载均衡器仍在向每个节点发送流量以测试运行状况。运行状况检查将使用服务节点端口。任何包含nginx loadbalancer吊舱的节点都将响应运行状况检查。任何没有nginx负载平衡器吊舱的节点都会丢弃数据包,因此检查失败 这只会导致某些节点显示为健康节点
对于nginx入口控制器,我建议使用默认值
cluster
,而不是将其更改为local
,这是预期的行为。使用配置服务,以便只有存在服务吊舱的节点才会接受流量。这意味着,任何没有接收服务流量的服务pod的节点都将丢弃数据包
GCP网络负载均衡器仍在向每个节点发送流量以测试运行状况。运行状况检查将使用服务节点端口。任何包含nginx loadbalancer吊舱的节点都将响应运行状况检查。任何没有nginx负载平衡器吊舱的节点都会丢弃数据包,因此检查失败
这只会导致某些节点显示为健康节点
对于nginx入口控制器,我建议使用默认值
cluster
,而不是将其更改为local
您是否对服务使用externalTrafficPolicy:local
?考虑到整个过程都是有效的,并且你有1/3的健康节点,这是最有可能的罪魁祸首。@PatrickW我是肯定的-我已经编辑了问题,将其包括在上面-你认为哪里不对?为什么这会导致报告不健康节点?我还发现我没有使用:controller.service.healthCheckNodePort
,读取我的设置可能需要哪些文档?“如果controller.service.type为NodePort或LoadBalancer,并且controller.service.externalTrafficPolicy设置为Local,则将其设置为kube代理将公开的托管运行状况检查端口…”由于您使用的是nginx ingress controller,您不需要使用NodePort。您是否对服务使用externalTrafficPolicy:Local
?考虑到整个过程都是有效的,并且你有1/3的健康节点,这是最有可能的罪魁祸首。@PatrickW我是肯定的-我已经编辑了问题,将其包括在上面-你认为哪里不对?为什么这会导致报告不健康节点?我还发现我没有使用:controller.service.healthCheckNodePort
,读取我的设置可能需要哪些文档?“如果controller.service.type为NodePort或LoadBalancer,并且controller.service.externalTrafficPolicy设置为Local,则将其设置为kube代理将公开的托管运行状况检查端口…”因为您使用的是nginx入口控制器,所以不需要使用NodePort
ingress:
enabled: true
rbac.create: true
controller:
service:
externalTrafficPolicy: Local
loadBalancerIP: ****
configData:
proxy-connect-timeout: "15"
proxy-read-timeout: "600"
proxy-send-timeout: "600"
proxy-body-size: "100m"