负载均衡器配置中来自不同池的不需要的节点

负载均衡器配置中来自不同池的不需要的节点

在我们的 Google Cloud(由 kubernetes 支持)的多个项目、工作负载和服务(负载均衡器)配置中,我们专门配置了负载均衡器,但配置似乎发生了变化。

我们专门将节点添加到我们的负载均衡器中,一段时间后,我们所有的节点(来自不同的池)最终都连接到全部我们的负载均衡器。在它们被神奇地添加回负载均衡器后,我们(再次)删除它们,然后过了一段时间,它们又全部回来了。

我意识到有很多缺失的实施信息,但希望有一些众所周知的模式,有人认为我们可能没有遵循。我会尽力发布配置详细信息。

答案1

当您在 Google Cloud 上使用 Kubernetes 和 手动创建的负载均衡器时Servicestype: NodePort它与您用于服务的负载均衡器几乎相同type: Load Balancer,但在第二种情况下,LB 由 Kubernetes 创建和管理,您不需要关心它。

由于Service类型NodePort为绑定地址,因此应将它们作为后端添加到 LB。检查文档,路径“Proxy-mode: iptables”。也许在您的情形下,Kubernetes 尝试管理它并将您的所有节点添加到 LoadBalancers,因为它们处理对其服务的请求。实际上,我还没有看到手动创建 LoadBalancers 并指向 Kubernetes 的安装。

在 Google Cloud 上,我强烈建议你使用入口(基于 Google Load Balancer 或 Nginx)或带有 的服务type: Load Balancer,如果您不需要自定义路由。

你可以像这样实现它(对于 Nginx Ingress):

  • Nginx Ingress Controller使用服务进行部署type: LoadBalancer。它将为您创建LoadBalancer所有流量的入口点。
  • Service使用部署您的应用程序type: ClusterIP
  • 创建一个入口为您的应用程序创建对象Service并在其中写入所有路由规则。

相关内容