首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多节点EKS集群中部署Ingress Nginx Controller ELB

在多节点EKS集群中部署Ingress Nginx Controller ELB
EN

Stack Overflow用户
提问于 2021-03-16 10:19:43
回答 2查看 1K关注 0票数 3

我目前正在尝试在我的AWS eks集群上部署NGINX Ingress Controller。我有4个节点在运行:

代码语言:javascript
复制
NAME                            STATUS   ROLES    AGE     VERSION
ip-10-230-35-48.ec2.internal    Ready    <none>   7h44m   v1.19.6-eks-49a6c0
ip-10-230-39-9.ec2.internal     Ready    <none>   7h42m   v1.19.6-eks-49a6c0
ip-10-230-42-241.ec2.internal   Ready    <none>   7h49m   v1.19.6-eks-49a6c0
ip-10-230-49-228.ec2.internal   Ready    <none>   7h46m   v1.19.6-eks-49a6c0

我正在使用NGINX Ingress Controller Installation guidedeploy-tls-termination.yaml部署我的ingress-nginx-controller

由于某些原因,亚马逊网络服务ELB没有将所有节点标记为健康状态,并给出了以下错误:

代码语言:javascript
复制
Instance has failed at least the UnhealthyThreshold number of health checks consecutively.

唯一标记为健康的节点是部署ingress-nginx-controller的节点。

我的yaml配置文件中是否遗漏了什么?或者我应该为每个Availibity Zone部署一个ingress-nginx-controller?如果是这样的话,是怎么做的?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-03-17 03:24:40

实际上是根据入口控制器和ELB的实现。ELB是运行入口控制器pod唯一被识别的节点。其余的节点是OutOfService。如果入口控制器pod将被移至另一个节点,则ELB会将该节点识别为InService实例。您可以通过删除控制器pod进行尝试。

建议将NLB或ALB负载均衡器与入口控制器一起使用。从k8s 1.18版本开始,NLB将默认用于入口负载均衡器。尝试使用此tutorial更改负载均衡器类型。

票数 0
EN

Stack Overflow用户

发布于 2021-03-17 09:49:15

当服务中的externalTrafficPolicy设置为Local时,这是预期的行为(这就是您所拥有的)。使用externalTrafficPolicy: Local,您不会获得任何额外的跳数--一旦流量到达节点,它就不会离开节点。负载均衡器将仅将流量发送到正在运行入口控制器pod的节点。在其他节点上,健康检查将返回503,并将被视为不健康。

如果希望所有节点都正常运行,请将externalTrafficPolicy更改为Cluster

通常不建议这样做,因为这样做不会将客户端的IP地址传播到end Pod。但这只适用于NLB,而不适用于Classic Elastic负载均衡器。所以,最好使用NLB和nginx入口控制器。如果您仍然希望所有节点都处于健康状态,请坚持使用Local策略&使用守护进程集。

官方documentation对此进行了讨论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66648243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档