Kubernetes 上嵌套容器的 Calico IP-in-IP 连接问题
Calico IP-in-IP connectivity issues with nested containers on Kubernetes
我正在实施 cluster-api controller using Kubernetes as the infrastructure provider - 也就是说,我正在尝试 运行 Kubernetes 节点作为 Kubernetes Pods 并在集群中形成集群。
除了内部集群的 Pods 之间的网络连接(基础设施集群的 Pods 上的 运行ning)之外,我还有这个工作,但我不知道什么问题是。
我运行正在使用 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 Pods 部署到内部集群。如果它们落在同一个内部集群节点上,它们就可以相互连接。如果它们落在单独的内部集群节点上,它们就不能,所以我认为这意味着 IP-in-IP 隧道无法正常工作,但我不确定为什么。即使内部集群节点(Pods)落在相同的基础设施(外部集群)节点上,这也会失败。两个集群的 Pod 和 Service CIDR 范围不重叠。
我知道这不是 Calico 支持的用例,但我看不出它不可能的原因,我想让它工作。外部集群节点是否需要支持转发IP-in-IP数据包?它们被配置为转发 IPv4 数据包,但我不确定这是否足够。
我想需要更多信息才能给出为什么这不起作用的具体原因,但我不太确定此时会是什么,如果有任何指示,我将不胜感激。
有必要在 GKE 节点上允许 ipencap
协议:
iptables -C FORWARD -p ipencap -j ACCEPT || iptables -A FORWARD -p ipencap -j ACCEPT
我正在实施 cluster-api controller using Kubernetes as the infrastructure provider - 也就是说,我正在尝试 运行 Kubernetes 节点作为 Kubernetes Pods 并在集群中形成集群。
除了内部集群的 Pods 之间的网络连接(基础设施集群的 Pods 上的 运行ning)之外,我还有这个工作,但我不知道什么问题是。
我运行正在使用 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 Pods 部署到内部集群。如果它们落在同一个内部集群节点上,它们就可以相互连接。如果它们落在单独的内部集群节点上,它们就不能,所以我认为这意味着 IP-in-IP 隧道无法正常工作,但我不确定为什么。即使内部集群节点(Pods)落在相同的基础设施(外部集群)节点上,这也会失败。两个集群的 Pod 和 Service CIDR 范围不重叠。
我知道这不是 Calico 支持的用例,但我看不出它不可能的原因,我想让它工作。外部集群节点是否需要支持转发IP-in-IP数据包?它们被配置为转发 IPv4 数据包,但我不确定这是否足够。
我想需要更多信息才能给出为什么这不起作用的具体原因,但我不太确定此时会是什么,如果有任何指示,我将不胜感激。
有必要在 GKE 节点上允许 ipencap
协议:
iptables -C FORWARD -p ipencap -j ACCEPT || iptables -A FORWARD -p ipencap -j ACCEPT