nginx - kubernetes 使用入口控制器进行负载平衡
问题描述
我正在尝试开始研究 K8s,并且在这样做的过程中我设法让自己感到困惑。
在使用诸如 AWS 或 DO 之类的 Kubernetes 提供程序时,具有以下内容似乎是一种相当常见的架构:
Cloud External Load Balancer -> [CLUSTER ENTRYPOINT] Nginx Ingress Controller -> Service A
-> Service B
-> Service C
关键是云负载均衡器将流量路由到 nginx 入口控制器,该控制器终止 SSL 并根据请求的路径转发到各种服务。
我不明白的是,此时我们不降低外部负载均衡器的功效吗?当然,它会在入口控制器副本之间分配流量,但这就是它所能做的一切,因为这就是它所知道的一切。它实际上无法跨该服务的 pod 为特定服务进行任何负载平衡。
- 这既正确又有效的生产设置?
- 负载均衡器只会将流量分配给反向代理,这是否被普遍接受?鉴于 nginx 本身可以充当负载平衡器,我无法克服这种想法有点浪费负载平衡器,但我不知道这是否真的正确。我可能完全误解了入口控制器的概念。
- 如果以上是正确的,那是像 linkerd 这样的服务网格出现的地方吗?大概使用 Linderd 之类的东西,从 nginx 入口到特定服务的流量将通过 linkerd在该服务的 pod 之间有效地进行负载平衡。
解决方案
推荐阅读
- android - Android:使用 Kotlin 模糊 LinearLayout 的背景
- python - TypeError:classification_report() 得到了一个意外的关键字参数“output_dict”
- vue.js - 将路由推送到函数内的父组件(Vue)
- node.js - 定义模型后是否需要 Model.init() ?续集打字稿
- laravel - Laravel 选择字段验证
- ios - 无法在我的 TableView 中显示自定义单元格文件?
- java - 处理公共/中心对象的最佳方式
- java - 如何将对象存储在另一个类中的一个类的数组列表中
- javascript - 如何防止 JavaScript 因多次单击按钮而滞后?
- swift - SWIFT Firestore 使用查询获取数据以过滤 whereField is equalTo a autoID 失败