首页 文章

nginx入口控制器和 Cloud 负载均衡器之间有什么关系?

提问于
浏览
0

我将 nginx ingress controller 部署到我的群集 . 这在我的 Cloud 提供商中提供了负载均衡器(假设AWS或GCE) . 但是,集群内的所有流量都由控制器根据入口规则和注释进行路由 .

那么在 Cloud 中安装负载均衡器的目的是什么呢?看起来控制器正在进行实际的负载 balancer ?

我想了解如何拥有它,以便 Cloud 负载均衡器实际上将流量路由到集群内的机器,同时仍然遵循我的所有 nginx 配置/注释,或者即使这是可能的/有意义的 .

2 回答

  • 1

    您可能拥有一个具有多个主服务器的高可用性(HA)群集,负载均衡器是一种在您的Kubernetes群集中“输入”的简单实用方法,因为您的应用程序应该可供您的用户使用(他们位于不同的网络上)来自你的集群) . 因此,您需要有一个K8S群集的入口点 .

    LB是一个易于配置的入口点 .

    以这张图片为例:
    enter image description here

    您的API服务器是负载 balancer 的 . 来自群集外部的呼叫将通过LB,并由API服务器管理 . 只有一个主服务器(当选的主服务器)负责在etcd数据库中保持集群的状态 .

    当你有 ingress controlleringress rules 时,在我看来,在K8S中配置和管理它们更容易,而不是在LB配置文件中编写它们(并在每次修改时重新加载配置) .

    我建议你看一下https://github.com/kelseyhightower/kubernetes-the-hard-way然后在里面练习 . 这是理解流程的好方法 .

  • 0

    在入口控制器中是一个“控制器”,在kubernetes术语中是一个软件循环,它监听声明性配置(Ingress资源)和相关“集群状态”的变化,比较两者,然后“协调”集群的状态为声明性配置 .

    在这种情况下,“群集状态”是以下组合:

    • 由控制器生成的nginx配置文件,由运行nginx的集群中的pod使用

    • Cloud 提供商处的配置,指示提供商的边缘流量基础架构将满足特定条件的某些外部交付流量传送到群集中的nginx pod .

    因此,当您更新Ingress资源时,控制器会注意到更改,创建新的nginx配置文件,更新并重新启动运行nginx的pod .

    就物理架构而言,将事物视为“内部”与“外部”或“您的集群”和“ Cloud ”之间的内容并不十分准确 . 客户可见的一切都是抽象的 .

    在GCP中,客户可见虚拟机,负载 balancer 器和托管集群下面有多层数据包和流量管理 .

    用于入口的外部流量通过Google基础架构中的多个逻辑控制点,在您进入“您的”群集之前,您的详细信息无法查看 .

相关问题