我们在kubernetes建立了一个cassandra集群。我们正在使用statefulset和headless服务。并计划实施多机架功能。
为此,我想在一个pod中部署多个容器,并计划为此添加关联规则。
但我能想到的一个可能的问题是
在kubernetes中,ip可以在重启/失败期间改变。
所以如果我有两个集装箱在一个吊舱里,我的吊舱就倒了。当pod出现时,两个容器都有可能交换ip,这将导致状态不一致。因为这2个容器的主令牌范围已更改,而其他cassandra节点不会更新此更改。
如果两个容器都获得了新的ip,那么我看不出有任何问题,因为其他cassandra节点将自己更新。我说的对吗?
如何在重新启动/失败期间防止此ip交换?
是否有任何文件可以帮助我实现多机架功能?
1条答案
按热度按时间mrfwxfqh1#
所以如果我有两个集装箱在一个吊舱里,我的吊舱就倒了。当pod出现时,两个容器都有可能交换ip,这将导致状态不一致。因为这2个容器的主令牌范围已更改,而其他cassandra节点不会更新此更改。
无法进行ip交换。因为c集群会抱怨ip已经在使用。因此,如果cpod找到了ccluster中不存在的其他ip,这是可以的,但是如果它试图找到一个ccluster中存在的ip,那么pod将无法启动并保持挂起状态。
如果两个容器都获得了新的ip,那么我看不出有任何问题,因为其他cassandra节点将自己更新。我说的对吗?
是的,你说得对。
如何在重新启动/失败期间防止此ip交换?
我们可以称之为ip交叉,而不是ip交换。你无法阻止这种情况。只有在这种情况发生时,你才能采取补救措施。您可以确定ip交叉已经发生,然后杀死pod,看看它是否接收到其他ip。