【发布时间】:2019-12-04 13:03:30
【问题描述】:
有人知道这两者的区别吗? 目前我看到的唯一区别是区域需要 >= 3 个区域。
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine
有人知道这两者的区别吗? 目前我看到的唯一区别是区域需要 >= 3 个区域。
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine
找到了很好的解释here
“多区域”集群是指具有至少一个 定义了额外的区域;在多区域集群中,集群主控 仅存在于单个区域中,而节点存在于每个区域中 主要区域和节点位置。相比之下,在一个区域 集群,集群主节点存在于多个区域中 地区。因此,应该首选区域集群。
【讨论】:
Compute Engine 资源托管在全球多个位置。这些位置由区域和区域组成。区域是您可以托管资源的特定地理位置。每个区域有一个或多个区域;大多数地区都有三个或更多区域。例如,us-west1 区域表示美国西海岸的一个区域,该区域具有三个区域:us-west1-a、us-west1-b 和 us-west1-c。
有关区域、区域、位置的非常详细的信息可以在GCP Documentation 上找到。您还可以在此处找到每个地区可用的功能(CPU、机器类型、光盘等)。
有关多区域和区域集群的信息以及如何创建/修改它们的信息,请参见here。
1. 区域/多区域集群 默认情况下,集群是在单个计算区域中创建的。多专区集群在同一区域内的多个专区中运行节点。单专区或多专区集群中的所有节点都由同一个集群主机控制。
多区域集群可以通过在跨多个区域的节点上运行应用程序来帮助提高应用程序的可用性。这有助于防止在不太可能发生的区域范围中断事件中出现停机。
2. 区域集群 区域集群将 Kubernetes 资源分布在一个区域内的多个区域中。区域集群在三个区域中创建三个集群主节点,默认情况下,在三个区域中创建节点,或者在任意数量的区域中创建节点。
另外请记住,如果您选择离您所在位置最近的区域,您将获得更快的响应。
【讨论】:
来自 GKE 文档:
默认情况下,集群是在单个计算区域中创建的。多专区集群在同一区域内的多个专区中运行节点。单专区或多专区集群中的所有节点都由同一个集群主机控制。
对于区域性 GKE 集群:
区域集群将 Kubernetes 资源分布在一个区域内的多个区域中。区域集群的主节点和节点分布在多个区域中。默认的 master 数量、每个 zone 的默认节点数和默认包含的 zone 数量均为三个,但您可以减少或增加数量以实现适当的集群大小和 zone 数量。
我最近构建了一个区域 GKE 引导程序,管理区域存储的挑战是巨大的(当然对我来说)。如文档中所述,读写永久性磁盘不能附加到多个节点。如果您的 Statefulset 尝试在没有 Persistent Volume 的节点中调度 pod,您将面临1 node(s) had volume node affinity conflict 之类的问题。使用taints 和node afinity 策略完全有可能克服这些挑战,但这伴随着 Kubernetes 管理的大量成熟。
另外,请记住,区域之间的流量是收费的,如果您无法完全控制架构细节,您最终会付出比计划更多的费用:
此外,您需要为跨区域的节点到节点流量付费。例如,如果您在一个区域中有一项服务需要与另一个区域中的服务通信,则您需要为跨区域网络流量付费。如需了解详情,请参阅 Compute Engine 定价页面上的“同一区域内各地区之间的出站流量(每 GB)”定价。
作为个人/小型专业设置,我建议坚持使用多区域集群并使用多区域磁盘的功能。
【讨论】:
根据 Google 的文档(2020 年 10 月 30 日)
区域集群:默认情况下,集群的控制平面(主)和节点都在您创建集群时指定的单个计算区域中运行。
多区集群:在创建 GKE 集群的同时选择多区创建节点,就变成了多区集群。虽然集群的控制平面(主)将在单个区域中运行,并且节点将跨越多个计算区域。
区域集群:这通过在一个区域的多个区域中复制集群的控制平面(主)及其节点来提高它们的可用性。这提供了多区域集群的优势,并具有以下额外优势:
对于区域集群,默认情况下,控制平面和每个节点池跨区域的三个可用区进行复制,但您可以自定义副本数量。
创建集群后,您无法修改集群是区域性、多区域性还是区域性。
【讨论】: