如何解决如果pod在kubernetes中重新启动/失败,如何防止在pod中运行的多个容器的IP交换?
我们已经在Kubernetes中设置了一个Cassandra集群。我们正在使用statefulSet和无头服务。并计划实施 Multi-Rack 功能。
为此,我想在一个pod中部署多个容器,并计划为此添加Affinity规则。
但是我能想到的一个可能的问题是
在Kubernetes中,IP可能会在重新启动/失败期间更改。
因此,如果我在一个容器中有2个容器,而我的容器掉了。当pod出现时,两个容器都可能交换其IP,这将导致状态不一致。由于这2个容器的主要令牌范围已更改,而其他Cassandra节点未对此更改进行更新。
如果两个容器都获得新的IP,那么我看不到任何问题,因为其他Cassandra节点将自行更新。我现在正确吗?
在重启/失败期间如何防止此IP交换?
是否有任何文档可以帮助我实现多机架功能?
解决方法
因此,如果我在一个容器中有2个容器,而我的容器掉了。当pod出现时,两个容器都可能交换其IP,这将导致状态不一致。由于这2个容器的主要令牌范围已更改,而其他Cassandra节点未对此更改进行更新。
无法进行IP交换。由于C *群集将抱怨IP已被使用。因此,如果C * Pod提出了C *集群中不存在的其他IP,则很好,但是如果它尝试提出C *集群中存在的IP,则Pod将无法启动并保持挂起状态。
如果两个容器都获得新的IP,那么我看不到任何问题,因为其他Cassandra节点将自行更新。我现在正确吗?
是的,您是对的。
在重启/失败期间如何防止此IP交换?
我们可以将其称为IP交叉,而不是IP交换。您无法避免这种情况。发生这种情况时,您只能采取补救措施。您可以识别出发生了IP交叉,然后杀死该Pod,看看它是否拾取了其他IP。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。