四层和七层负载均衡
Kubernetes 支持四层负载均衡和七层负载均衡。
四层负载均衡器
四层负载均衡器(或外部负载均衡器)将流量转发到 Nodeport。四层负载均衡器支持转发 HTTP 和 TCP 流量。
通常情况下,四层负载均衡器由底层云提供商支持,因此,如果你在裸金属服务器和 vSphere 集群上部署 RKE 集群,则不支持四层负载均衡器。但是,单个全局管理的 config-map 可用于在 NGINX 或第三方 Ingress 上公开服务。
你可以使用非云负载均衡器(例如 MetalLB)来部署集群。但是,该用例比云提供商支持的四层负载均衡器更高级,而且不可以在 Rancher 或 RKE 中配置。
四层负载均衡支持
不同底层云提供商对四层负载均衡器的支持有所不同:
集群部署 | 四层负载均衡器支持 |
---|---|
Amazon EKS | 由 AWS 云提供商支持 |
Google GKE | 由 GCE 云提供商支持 |
Azure AKS | 由 Azure 云提供商支持 |
EC2 上的 RKE | 由 AWS 云提供商支持 |
DigitalOcean 上的 RKE | 受限的 NGINX 或第三方 Ingress* |
vSphere 上的 RKE | 受限的 NGINX 或第三方 Ingress* |
自定义主机上的 RKE (例如裸金属服务器) | 受限的 NGINX 或第三方 Ingress* |
第三方 MetalLB | 受限的 NGINX 或第三方 Ingress* |
* 可以通过单个全局管理的 config-map 来公开服务。
七层负载均衡器
七层负载均衡器(或 Ingress Controller)支持基于主机和路径的负载均衡和 SSL 终止。七层负载均衡器仅转发 HTTP 和 HTTPS 流量,因此它们仅侦听端口 80 和 443。亚马逊和谷歌等云提供商支持七层负载均衡器。此外,RKE 集群部署了 Nginx Ingress Controller。
七层负载均衡支持
不同底层云提供商对七层负载均衡器的支持有所不同:
集群部署 | 七层负载均衡器支持 |
---|---|
Amazon EKS | 由 AWS 云提供商支持 |
Google GKE | 由 GKE 云提供商支持 |
Azure AKS | 不支持 |
EC2 上的 RKE | Nginx Ingress Controller |
DigitalOcean 上的 RKE | Nginx Ingress Controller |
vSphere 上的 RKE | Nginx Ingress Controller |
自定义主机上的 RKE (例如裸金属服务器) | Nginx Ingress Controller |
七层负载均衡器中的主机名
一些托管在云上的七层负载均衡器(例如 AWS 上的 ALB Ingress Controller)会为 Ingress 规则公开 DNS 地址。你需要(使用 CNAME)将你的域名映射到七层负载均衡器生成的 DNS 地址。
其他七层负载均衡器(例如 Google Load Balancer 或 Nginx Ingress Controller)会直接公开一个或多个 IP 地址。Google Load Balancer 提供了一个可路由的 IP 地址。Nginx Ingress Controller 公开了运行 Nginx Ingress Controller 的所有节点的外部 IP。你可以执行以下任一操作:
- 配置你自己的 DNS,从而(使用 A 记录)将你的域名映射到七层负载均衡器公开的 IP 地址。
- 让 Rancher 为你的 Ingress 规则生成一个 xip.io 主机名。Rancher 将使用你公开的其中一个 IP(假设是
a.b.c.d
)生成一个主机名(即<ingressname>.<namespace>.a.b.c.d.xip.io
)。
使用 xip.io 的好处是你可以在创建 Ingress 规则后立即获得一个有效的入口点 URL。此外,如果你设置自己的域名,则需要配置 DNS 服务器并等待 DNS 传播。