【问题标题】:why kubernetes HA need odd number of master为什么 Kubernetes HA 需要奇数个 master
【发布时间】:2018-12-19 00:56:29
【问题描述】:

我有 3 个 master 的 Kubernetes HA 环境。试一试,关闭两个master(杀死apiserver/kcm/scheduler进程),然后只有一个master可以正常工作。我可以使用 kubectl 成功创建部署,一些 pod 被调度到不同的节点并启动。那么任何人都可以解释为什么建议使用奇数个大师吗?谢谢。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    因为如果您的服务器数量是偶数,那么很容易陷入网络中断而您每边正好有 50% 的情况。使用奇数时,您不会(很容易)遇到网络中多个分区认为它拥有多数控制权的情况。

    【讨论】:

    • 感谢您的回答。但我认为如果是这个原因,它应该像 etcd 集群,如果有 3 个成员并且其中 2 个丢失,最后一个应该不起作用。在我的测试中,唯一的一位大师也运行良好。这意味着如果网络分成两部分,两部分中的两个master都可以工作?
    • 分区多数方的两个节点将能够获得选举的法定人数(如果需要),而少数方则不能,所以是的。
    • 这取决于你如何配置etcd,它确实支持单节点操作,主要用于测试和演示:)
    • 在我的测试中,我只是杀死了主组件进程而不是 etcd 成员,如果我关闭了三个 etcd 成员中的两个,整个 kubernetes 将无法工作。你的意思是 etcd 中有一个配置来控制 kubernetes 主组件的这种“单节点操作”吗?
    • 我的意思是除了 etcd,所有其他组件都不需要仲裁,它们要么是像 apiserver 这样的水平服务,要么像调度程序一样运行自己的控制选举。我不太明白你的问题。
    【解决方案2】:

    简答:对 etcd 有更高的容错能力。

    Etcd 使用RAFT 进行领导者选择。一个 etcd 集群需要大多数节点(一个仲裁)来就领导者达成一致。对于有 n 个成员的集群,quorum 为 (n/2)+1。

    在容错方面,向奇数大小的集群添加一个额外的节点会降低容错能力。如何?我们仍然有相同数量的节点可能会失败而不会失去仲裁,但是我们有更多的节点可能会失败,这意味着失去仲裁的可能性实际上比以前更高。

    关于容错请查看this官方etcd文档了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 2020-05-09
      • 2020-09-11
      • 1970-01-01
      相关资源
      最近更新 更多