【问题标题】:Calico IP-in-IP connectivity issues with nested containers on KubernetesCalico IP-in-IP 连接问题与 Kubernetes 上的嵌套容器
【发布时间】:2020-04-23 23:22:55
【问题描述】:

我正在实现cluster-api controller using Kubernetes as the infrastructure provider - 也就是说,我正在尝试将 Kubernetes 节点作为 Kubernetes Pod 运行并在集群中形成一个集群。

除了内部集群的 Pod 之间的网络连接(在基础设施集群的 Pod 上运行)之外,我还有这个工作,但我不知道问题是什么。

我在 GKE 上运行,使用他们的默认 CNI 实现。然后我尝试将 Calico 用于内部集群的覆盖实现,使用 IP-in-IP 封装,因此基础设施集群的节点不需要知道如何路由内部集群 Pod IP。

我正在按如下方式创建基础架构集群(Calico's IP-in-IP 封装所需的ipip 内核模块需要 UBUNTU 映像。

gcloud container clusters create management-cluster --image-type=UBUNTU

然后我将一些 nginx Pod 部署到内部集群。如果它们落在同一个内部集群节点上,它们就可以相互连接。如果它们降落在单独的内部集群节点上,它们就不能,所以我认为这意味着 IP-in-IP 隧道无法正常工作,但我不知道为什么。即使内部集群节点 (Pod) 位于相同的基础架构(外部集群)节点上,这也会失败。两个集群的 Pod 和 Service CIDR 范围不重叠。

我意识到这不是 Calico 受支持的用例,但我看不出它不可能的原因,我想让它工作。外部集群节点是否需要支持转发 IP-in-IP 数据包?它们被配置为转发 IPv4 数据包,但我不确定这是否足够。

我想需要更多信息来说明为什么这不起作用的具体原因,但我不太确定此时会是什么,并且希望得到任何指导。

【问题讨论】:

    标签: kubernetes containers tunnel project-calico cni


    【解决方案1】:

    必须在 GKE 节点上允许 ipencap 协议:

    iptables -C FORWARD -p ipencap -j ACCEPT || iptables -A FORWARD -p ipencap -j ACCEPT
    

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 2012-04-26
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      相关资源
      最近更新 更多