Kubernetes 安格尔控制器nginx领导人选举-为什么?

Kubernetes 安格尔控制器nginx领导人选举-为什么?,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,有人能解释为什么在部署具有多个副本的入口控制器nginx时需要领导人选举吗? 他们之间有同步吗? 实际同步的是什么 我搜索了文档,发现。。。没有什么 我知道有一个配置图包含了领导者的舱名,但基本上就是这样 我还看到,在启动pod时,领导人选举正在进行 I0828 16:08:39.500651 7 nginx.go:307] Starting NGINX process I0828 16:08:39.500779 7 leaderelection.go:242] atte

有人能解释为什么在部署具有多个副本的入口控制器nginx时需要领导人选举吗? 他们之间有同步吗? 实际同步的是什么

我搜索了文档,发现。。。没有什么 我知道有一个配置图包含了领导者的舱名,但基本上就是这样

我还看到,在启动pod时,领导人选举正在进行

I0828 16:08:39.500651       7 nginx.go:307] Starting NGINX process
I0828 16:08:39.500779       7 leaderelection.go:242] attempting to acquire leader lease ingresscontroller/ingress-controller-leader...
I0828 16:08:39.500890       7 nginx.go:327] Starting validation webhook on :8443 with keys /usr/local/certificates/cert /usr/local/certificates/key
I0828 16:08:39.503049       7 controller.go:141] Configuration changes detected, backend reload required.
I0828 16:08:39.504322       7 status.go:86] new leader elected: ingress-nginx-controller-xxxxxx-xxxx
I0828 16:08:39.728368       7 controller.go:157] Backend successfully reloaded.
I0828 16:08:39.728416       7 controller.go:166] Initial sync, sleeping for 1 second.
有人能提供一些关于为什么需要领导者的见解吗

提前谢谢


Bregt

领导人选举,简单地说,是一种机制,它确保只有一个nginx入口控制器实例在积极地做出决策,而所有其他实例都处于非活动状态,但如果主动的实例发生了什么事情,它就可以发挥领导作用

这在本质上与kubernetes的控制平面组件(如kube控制器管理器或kube调度器)非常相似

同步是从入口资源中定义的规则到实际nginx配置文件中所需状态的同步

nginx入口控制器pod副本本身之间不存在状态同步,因为当pod第一次启动时,每个pod都能够执行从入口资源到实际nginx配置文件的所需状态的同步,并通过api持续监视入口和少数其他资源由kubernetes API服务器公开。

摘自:

-启用领导人选举 允许领导人选举以避免控制器的多个副本报告进入状态, VirtualServer和VirtualServer路由资源–只有一个副本 报告状态。默认为真


嗨,谢谢你的回复。我知道什么是领导人选举,但我不知道领导人究竟在做什么决定。流量将流向两个入口nginx吊舱,两个吊舱都能够处理我的请求。所以基本上,他们都应该是无国籍的。此引线做什么而其他节点不做?的确两个节点之间没有状态同步,因为它们都有所需的所有信息。我遇到了相同的问题…k8s群集工作数周,然后它似乎随机决定从一个不活动的入口控制器吊舱中选择一个新的领导者…它会自我修复,但会在几分钟内给我的客户端造成502个错误…无法理解为什么@Bregtcoenen除此之外,我发现98%的流量都流向了“领导者”舱。为什么会这样?我希望两个豆荚之间有50%的分配。你找到答案了吗@布雷格特科宁