我对多主 Kubernetes 在发生不同类型故障时的行为感兴趣,特别是如果主节点位于不同的机架上。
设想:
2 个机架,R1,R2。
API大师:
- R1 上的 M1,R2 上的 M2。
工作节点:
- R1 上的 W1,R2 上的 W2。
等等:
- 一个完全独立的 HA Etcd 集群,包含 3 个节点(即它不在 API 主节点上运行)。
我的失败问题基本上是围绕裂脑场景:
如果 M1 是活动的主设备,并且 R1 失去与 Etcd 和 R2 的连接,但 R2/M2 与 Etcd 有连接,会发生什么情况?即是什么具体导致了领导选举?
如果 R1/W1 上有一个 Pod P1,M1 是 active master,而 R1 与 R2 和 Etcd 断开连接,会发生什么?P1 是继续运行,还是被杀死?M2 是否在 R2 上启动 P (P2) 的单独实例?如果是这样,P1 和 P2 可以同时运行吗?
如果 R2/W2 上有一个 Pod P2 并且 M1 是活动的 master(即 pod 位于与 master 不同的机架上)并且 R1 失去了与 R2 和 Etcd 的连接,那么 P2 会发生什么?它会继续运行并由 M2 接管吗?