1

我有一种情况,我想在同一个 AWS VPC 共享子网中运行两个 kubernetes 集群。这似乎工作正常,除了 weave CNI 插件似乎发现了另一个集群中的节点。这些节点因“IP分配由不同的对等方播种”而被拒绝,这是有道理的。它们是不同的集群。有没有办法阻止编织在备用集群中找到机器。当我这样做时weave --local status ipamweave --local status targets我会看到每个集群的预期目标和 ipam。

Weave pod 处于连接和拒绝来自备用集群的节点的无限循环中。这会消耗 CPU 并影响集群。如果我kube-utils在 weave pod 内运行,它会为每个集群返回正确的节点。似乎 kubernetes 应该知道哪些对等点可用,我可以只编织使用集群知道的对等点。

经过进一步调查,我认为问题在于我已经为两个集群向上和向下扩展了机器。在此过程中,IP 地址从一个集群重复使用到下一个集群。例如,集群 A 缩小了一个节点。Weave 继续尝试连接到现在丢失的节点。集群 B 扩展并使用最初在集群 A 中使用的 ip。Weave 找到该节点。这然后使编织“发现”其他集群节点。一旦它从另一个集群中发现一个节点,它就会发现所有节点。

我已经从 2.4.0 升级到 2.4.1,看看是否有一些与重用 ips 相关的修复可以缓解这个问题。

4

2 回答 2

1

这里有一个演示,其中 Weave Net 跨多个集群运行。该演示显示在 KubeCon 2016 的主题演讲中。

最重要的部分在这里 阻止后续集群形成自己的集群,从而拒绝来自其他集群的连接。

--ipalloc-init=observer

这不是一个特别干净的解决方案,修改配置,但它确实有效。

于 2019-06-18T14:25:19.143 回答
0

我没有测试过它,但似乎该选项known-peers应该可以解决问题。当与所有已知主机建立连接时,Weave 主机不应尝试连接到其他主机。

$ kubectl apply -f " https://cloud.weave.works/k8s/net?k8s-version= $(kubectl version | base64 | tr -d '\n')&known-peers=逗号分隔的主机列表。默认值:空。”

您可以在“更改配置选项”部分找到有关 Weave 插件可用选项的更多信息:

于 2018-10-22T19:04:29.673 回答