是否可以使用 1 个 Kubernetes ingress 对象将流量路由到不同集群中的 k8s 服务?
Is it possible to use 1 Kubernetes ingress object to route traffic to k8s services in different clusters?
我有以下设置:
k8s集群A,包含服务SA
k8s 集群 B,包含服务 SB,以及一个将流量路由到 SB
的 HTTP 入口
是否可以将服务 SA 添加为入口路径之一的后端服务?如果是这样,我如何在入口配置文件中引用它? (按常规方式使用选择器是不行的,大概是因为我们在不同的集群)
入口对象有助于为单个集群配置 HTTP(S) 负载平衡。他们没有多集群的概念,所以他们不会为你想要完成的事情提供配置语言(也许他们会 Ubernetes,但他们今天肯定没有)。
结果是您可以绕过 Ingress 配置并手动配置路由(毕竟,Ingress 实际上只是典型 L7 配置的易用快捷方式)。您可以在 GCP 中创建自己的 L7 配置,并设置基于路径的转发以路由到不同的后端组。然后,您可以将后端组分配给您在每个集群中配置的 NodePort
服务。
大致的步骤是:
- 在每个集群中创建一个
NodePort
服务
- 为每项服务创建 HTTP 健康检查
- 添加防火墙规则以允许 http 健康检查到达您的后端
- 向集群的实例组添加服务(例如
gcloud compute instance-groups managed set-named-ports ...
)
- 为负载均衡器添加后端服务(例如
gcloud compute backend-services create ...
)
- 将集群的后端添加到此后端服务(例如
gcloud compute backend-services add-backend ...
)
- 将 URL 映射到您的后端服务(例如
gcloud compute url-maps create ...
)
- 为该后端服务创建一个负载平衡代理(例如
gcloud compute target-http-proxies create ...
)
- 为该代理创建转发规则(例如
gcloud compute forwarding-rules create ...
)
只是对罗伯特上面所说的补充一点。首先,您需要在 NodePort 服务中指定一个特定的 nodePort。然后,将该端口号用于 "named port" 和健康检查。最后,您创建的防火墙规则也必须允许该端口。
作为初学者,我确实发现使用控制台可以更轻松地进行配置。
我有以下设置: k8s集群A,包含服务SA k8s 集群 B,包含服务 SB,以及一个将流量路由到 SB
的 HTTP 入口是否可以将服务 SA 添加为入口路径之一的后端服务?如果是这样,我如何在入口配置文件中引用它? (按常规方式使用选择器是不行的,大概是因为我们在不同的集群)
入口对象有助于为单个集群配置 HTTP(S) 负载平衡。他们没有多集群的概念,所以他们不会为你想要完成的事情提供配置语言(也许他们会 Ubernetes,但他们今天肯定没有)。
结果是您可以绕过 Ingress 配置并手动配置路由(毕竟,Ingress 实际上只是典型 L7 配置的易用快捷方式)。您可以在 GCP 中创建自己的 L7 配置,并设置基于路径的转发以路由到不同的后端组。然后,您可以将后端组分配给您在每个集群中配置的 NodePort
服务。
大致的步骤是:
- 在每个集群中创建一个
NodePort
服务 - 为每项服务创建 HTTP 健康检查
- 添加防火墙规则以允许 http 健康检查到达您的后端
- 向集群的实例组添加服务(例如
gcloud compute instance-groups managed set-named-ports ...
) - 为负载均衡器添加后端服务(例如
gcloud compute backend-services create ...
) - 将集群的后端添加到此后端服务(例如
gcloud compute backend-services add-backend ...
) - 将 URL 映射到您的后端服务(例如
gcloud compute url-maps create ...
) - 为该后端服务创建一个负载平衡代理(例如
gcloud compute target-http-proxies create ...
) - 为该代理创建转发规则(例如
gcloud compute forwarding-rules create ...
)
只是对罗伯特上面所说的补充一点。首先,您需要在 NodePort 服务中指定一个特定的 nodePort。然后,将该端口号用于 "named port" 和健康检查。最后,您创建的防火墙规则也必须允许该端口。
作为初学者,我确实发现使用控制台可以更轻松地进行配置。