这是我目前的解决方案:
带云的LoadBalancer实例->集群节点端口服务->入口控制器服务->入口控制Pod。
是否需要使用DaemonSet部署入口控制器?
在一个相当大的集群中部署ingress,因为与守护进程集相比,部署多个副本是合适的。使用部署时,只需确保复制副本部署在不同的节点中。您不需要大量的NGINX实例来处理大量的流量,最重要的是,您需要记住入口控制器的每个实例都需要到达kubernetes API服务器。这意味着,如果您有大量的复制副本,则会给您带来(不必要的(压力。在大多数情况下,使用具有反关联规则的部署来避免同一节点中的多个副本就足够了
根据我的经验,入口控制器首选Deamonset,而不是部署。我们最近遇到了一个问题,入口控制器通过部署运行,其中一个节点没有分配这个pod。由于同样的原因,该节点被列为";"不健康";在负载平衡器targergroup healthcheck中。
即使是Nginx也推荐Daemoset,尽管管理得当的部署也能起到同样的作用。
DaemonSet为每个集群节点精确调度一种类型的Pod,除非将节点配置为排斥这些Pod,否则将包含主节点。
https://kubernetes.github.io/ingress-nginx/deploy/baremetal/
您可能需要添加污点和容忍以从守护进程集中排除主节点,因为只有工作进程需要运行此pod。