0

我是 K8S 的新手。我的理解是,我将不得不为单独的区域创建一个单独的集群。例如,我必须创建 3 个集群,一个用于 us-south,另一个用于 eu-gb,第三个用于 au-syd 区域。现在假设我需要在每个区域的每个集群中运行我的应用程序。此外,我可能希望将此应用程序 foo 复制到跨每个区域的多个节点的多个 pod 上。在这种情况下,将抽象此应用程序的服务 foo-service 是特定于区域集群的服务还是跨越我的所有 3 个集群?

4

2 回答 2

0

我的理解是,我将不得不为单独的区域创建一个单独的集群。

是的,这是正确的。每个区域都有一个单独的集群。

现在假设我需要在每个区域的每个集群中运行我的应用程序。

集群是独立的,因此您在每个集群中部署每个应用程序,除非您设置了一些Cluster Federation

此外,我可能希望将此应用程序 foo 复制到跨每个区域的多个节点的多个 pod 上。

集群是独立的。因此,应用程序部署在每个实例中,并在集群中进行复制——可能会通过水平自动缩放自动进行,例如,如果一个区域有更多负载,则该集群会自动将应用程序从 3 个实例扩展到 5 个实例

在这种情况下,将抽象此应用程序的服务 foo-service 是特定于区域集群的服务还是跨越我的所有 3 个集群?

集群是独立的,因此每个服务也将独立于其他区域的服务。如果您使用可用区,则可以在同一区域中设置跨可用区的集群。

于 2019-12-24T08:09:52.077 回答
0

除了 Jonas 给出的解释之外,还有可能使用Pod 拓扑传播约束功能让单个集群覆盖多个区域(尽管有一些开销和配置复杂性)。

所以你的集群看起来像:

+---------------+---------------+---------------+
|     zoneA     |     zoneB     |     zoneC     |
+-------+-------+-------+-------+-------+-------+
| node1 | node2 | node3 | node4 | node5 | node6 |
+-------+-------+-------+-------+-------+-------+

结合 PodAffinity/PodAntiAffinity,您可以尝试将任意数量的 Pod 打包到合格的拓扑域中。

不用说,您必须拥有 3 组服务(每个区域一个)。例如,您可以使用LoadBalancer服务类型。

因此,您将能够分别处理来自 foobar.us-south 、 foobar.au-sy 和 foobar.eu-gb 的请求)并在需要时在特定区域生成额外的 pod。

希望(结合乔纳斯的回答)涵盖该主题:)

于 2019-12-30T13:02:16.843 回答