Files
rancher-docs/archived_docs/zh/version-2.7/pages-for-subheaders/load-balancer-and-ingress-controller.md
T

62 lines
4.5 KiB
Markdown

---
title: 在 Rancher 中设置负载均衡器和 Ingress Controller
description: 了解如何设置负载均衡器和 Ingress Controller 以在 Rancher 中重定向服务请求,并了解负载均衡器的限制
---
在 Rancher 中,你可以通过设置负载均衡器和 Ingress Controller 来重定向服务请求。
## 负载均衡器
启动应用程序后,该应用程序仅在集群内可用。你无法从集群外部访问它。
如果你希望从外部访问应用程序,则必须向集群添加负载均衡器或 Ingress。如果用户知道负载均衡器的 IP 地址和应用的端口号,负载均衡器可以为外部连接创建一个访问集群的网关。
Rancher 支持两种类型的负载均衡器:
- [Layer-4 负载均衡器](../how-to-guides/new-user-guides/kubernetes-resources-setup/load-balancer-and-ingress-controller/layer-4-and-layer-7-load-balancing.md#四层负载均衡器)
- [Layer-7 负载均衡器](../how-to-guides/new-user-guides/kubernetes-resources-setup/load-balancer-and-ingress-controller/layer-4-and-layer-7-load-balancing.md#七层负载均衡器)
有关详细信息,请参阅[负载均衡器](../how-to-guides/new-user-guides/kubernetes-resources-setup/load-balancer-and-ingress-controller/layer-4-and-layer-7-load-balancing.md)。
### 负载均衡器限制
负载均衡器有几个需要注意的限制:
- 负载均衡器只能处理每个 service 的一个 IP 地址。换言之,如果你在集群中运行了多个 service,则必须为每个 service 配备一个负载均衡器。运行多个负载均衡器的花费可能非常高昂。
- 如果你想将负载均衡器与托管的 Kubernetes 集群(即托管在 GKE、EKS 或 AKS 中的集群)一起使用,则负载均衡器必须运行在该云提供商的基础设施上。请根据你配置集群的方式查看负载均衡器的兼容列表:
- [支持 Layer-4 负载均衡](../how-to-guides/new-user-guides/kubernetes-resources-setup/load-balancer-and-ingress-controller/layer-4-and-layer-7-load-balancing.md#四层负载均衡支持)
- [支持 Layer-7 负载均衡](../how-to-guides/new-user-guides/kubernetes-resources-setup/load-balancer-and-ingress-controller/layer-4-and-layer-7-load-balancing.md#七层负载均衡支持)
## Ingress
如上所述,使用负载均衡器的缺点是:
- 每个服务负载均衡器只能处理一个 IP 地址。
- 如果你在集群中运行多个服务,则每个服务都必须配备一个负载均衡器。
- 为每个服务配备负载均衡器的花费可能非常高昂。
相反,如果将某个 Ingress 用作集群的入口点,Ingress 可以更灵活地将流量路由到多个 service。它可以将多个 HTTP 请求映射到 service,而无需为每个 service 提供单独的 IP 地址。
因此,如果你需要使用相同的 IP 地址、Layer 7 协议或特权节点端口(80 和 443)来公开多个 service,你可以使用一个 Ingress。
Ingress 与一个或多个 Ingress Controller 一起动态路由 service 的请求。Ingress 收到请求时,集群中的 Ingress Controller 会根据你配置的 service 子域或路径规则将请求定向到正确的 service。
每个 Kubernetes Ingress 资源都对应一个 `/etc/nginx/sites-available/` 中的文件,其中包含一个配置对特定文件和文件夹的请求的 `server{}` 配置块。
Ingress 能为你的集群创建一个入口端口(与负载均衡器类似),可以位于集群的内部或外部。RKE 启动的集群中的 Ingress 和 Ingress Controller 由 [Nginx](https://www.nginx.com/) 提供支持。
Ingress 还支持其他功能,例如 SSL 终止、基于名称的虚拟主机等。
:::note 在高可用性配置中使用 Rancher:
请避免将 Ingress 添加到 `local` 集群。Rancher 将 Nginx Ingress Controller 作为 Rancher 管理的 _所有_ 集群的全局入口点,其中包括 `local` 集群。因此,当用户尝试访问应用程序时,Rancher 可能会由于重新加载 Nginx 配置而断开连接。要解决这个问题,我们建议你仅在通过 Rancher 启动的集群中部署应用程序。
:::
- 有关如何在 Rancher 中设置 Ingress 的更多信息,请参阅 [Ingress](../how-to-guides/new-user-guides/kubernetes-resources-setup/load-balancer-and-ingress-controller/add-ingresses.md)。
- 有关 Ingress 和 Ingress Controller 的完整信息,请参阅 [Kubernetes Ingress 文档](https://kubernetes.io/docs/concepts/services-networking/ingress/)。
- 在项目中使用 Ingress 时,你可以通过设置全局 DNS 条目来将 Ingress 主机名编程到外部 DNS。