Kubernetes K8s群集中的Redis故障切换

Kubernetes K8s群集中的Redis故障切换,kubernetes,redis,failover,Kubernetes,Redis,Failover,我正在尝试让Redis故障切换在Kubernetes中工作,并出现工作节点故障场景。我有一个K8s集群,它由一个主节点和两个工作节点组成。主节点不安排吊舱。Redis的清单是这样的:在一个有状态集中有一个主实例和一个从实例,在另一个有状态集中有3个哨兵。清单具有引导吊舱在单独的工作节点上调度的亲缘关系。如果我耗尽一个具有主实例和一个sentinel的工作节点,故障切换就像champ一样工作 但是,如果有2个哨兵被主实例逐出,则不会选择任何主节点,并且在剩余工作节点上重新启动的2个哨兵报告:-故障

我正在尝试让Redis故障切换在Kubernetes中工作,并出现工作节点故障场景。我有一个K8s集群,它由一个主节点和两个工作节点组成。主节点不安排吊舱。Redis的清单是这样的:在一个有状态集中有一个主实例和一个从实例,在另一个有状态集中有3个哨兵。清单具有引导吊舱在单独的工作节点上调度的亲缘关系。如果我耗尽一个具有主实例和一个sentinel的工作节点,故障切换就像champ一样工作

但是,如果有2个哨兵被主实例逐出,则不会选择任何主节点,并且在剩余工作节点上重新启动的2个哨兵报告:-故障转移中止没有好的从属主节点jnpr ipb redis masters 10.244.1.209 7380。日志消息中的IP地址是以前的从机的IP地址,我希望它升级到新的主机


有没有什么魔法可以让这一切顺利进行?这是有效的群集配置吗?我真的不确定我应该看什么来了解正在发生的事情。

你想要的是一个PodDisruptionBudget。这将使自愿驱逐至少不会破坏事情。除此之外,您还可以使用硬反亲和力强制在不同的节点上调度POD。但是,如果同时丢失两个节点,则仍有可能发生故障,哨兵可以解除同步。这就是为什么Redis Sentinel不再使用群集模式的主要原因。

如果我只有两个工人,而我失去了一个,就没有自愿驱逐。自愿驱逐是从kubectl排水管之类的地方进行的。正如我所提到的,故障仍然可能发生,这是Redis Sentinel已知的结构问题;不可能有任何豆荚落在后面。看来吊舱破坏预算会使模拟产生偏差。