为什么生产Kubernetes集群至少需要三个节点?

24

官方 Kubernetes 教程的第一部分指出,处理生产流量的 Kubernetes 集群应该至少有三个节点。

但是并没有说明为什么三个节点是首选。是因为比两个节点更可靠,还是因为需要满足 Kubernetes 内部的某些特殊需求呢?我认为,只有在有多个 Kubernetes 集群(每个集群都有不同的主节点)的情况下才会发生拆分脑的情况,而单个集群应该可以至少处理两个节点,每个节点可能位于自己的可用性区域。


我不太确定如何修改这个问题,以使其“切题”,而不会大幅修改问题(据我所知)。我希望重新措辞以反映minikube和非minikube环境之间的语义差异,因为似乎我的误解就在这里,但我觉得这可能会使原始问题变形,例如“生产Kubernetes建议使用三个‘节点’,在minikube中主节点是单数?”或类似的问题。 - rjs
1
感谢RJS提出这个问题,我认为你说得很对,我们需要改进文档。也许构建高可用性集群可以帮助,但它也没有为3个节点提供理由... - Michael Hausenblas
由于领导者选举的原因,两个主节点无法决定谁是领导者,并会不断产生错误。三个可以,但更多的节点可以提供更好的冗余性。 - Terence Bor
1个回答

17

这意味着每个集群至少需要3个主节点。

Kubernetes将所有关键数据存储在etcd中,当发生故障时,会使用多数派来进行修复。每个主节点上都运行一个etcd实例。在生产级别的集群中,希望有至少三个etcd来支持。因此,每个集群至少需要三个主节点。


1
我所提到的链接中的完整引用和相关图表似乎暗示这些节点不是主节点,而是直接与主节点通信的节点,除非在该文档的上下文中,节点既是主节点又是直接与主节点通信的节点。 - rjs
2
嗯,是的 - 那页上的引用、图表和其他语言主要是关于minikube的,它是kubernetes的单节点开发版本,但在生产架构和需求的背景下看起来不准确。在生产环境中,考虑到高可用性,kube需要足够的主节点以在容忍故障的情况下提供仲裁,并为各个组件进行领导者选举。集群租户工作负载通常在从节点上运行。这是一个更好的概述:https://kubernetes.io/docs/admin/high-availability/building/ - Jonah Benton
1
从OP链接的教程来看,似乎每个群集应该有一个主节点,它管理任意数量的“从”节点。他们经常称之为“主节点”,从未使用复数“主节点”。这非常模糊。 - Craig Otis
1
是的,同意。在教程中追求概念清晰/简单和技术精度的正确平衡非常困难,为页面辩护。也许该页面应该将更有经验的读者引导到Kelsey Hightower的《Kubernetes the Hard Way》。 - Jonah Benton
为什么是3呢?为什么不是2呢? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接