【问题标题】:calico network connectivity failing between pods and services and pods in different hosts不同主机中的 pod 和服务以及 pod 之间的 calico 网络连接失败
【发布时间】:2021-02-20 03:49:12
【问题描述】:

我已经实现了一个多主 HA kubernetes 集群,并希望按照here 中的描述实现 Calico 硬件。我能够完成所有步骤,但不同节点中的 pod 和服务以及 pod 和其他 pod 之间没有连接。

只是,不同之处在于我在 AWS 中使用了两个不同的 AZ,我想这应该不是问题。我可以看到 pod 正在获取 IP,并且 calico 网络接口正在创建,但仍然可以看到我解释的连接。 Node 甚至没有公共互联网访问权限。我在指南中进行了完全相同的 BGP 配置,但没有运气,而且在涉及多可用区部署时,我不太确定 BGP 配置中需要更改的内容。我不太了解 Calico BGP 配置。

很遗憾,calicoctl node diags 无法正常运行,并且没有提供更多信息来继续前进。

我希望您能提出宝贵的意见和建设性的批评来解决这个问题。

【问题讨论】:

  • 您可以尝试启用“CrossSubnet” IPIP 模式,如here 所述吗?
  • 实际上,我在发布此内容后发现了此内容,并且我遵循了 IPIP "CrossSubnet" 和 "natOutgoing" true 现在最终得到了不同的结果。你可以找到它here:我不太清楚,想解决这个问题以验证它的功能。
  • 我去看看。可以肯定的是,您是否还为 ec2 实例禁用了 src/dest checks
  • 是的,我也这样做了:(
  • 感谢您的宝贵意见,您的意思是在这里询问 Stackoverflow?我正在考虑在追逐我的 github 问题时再试一次。如果更好。我可以再养一个。感谢您的帮助!

标签: kubernetes project-calico calico bgp cni


【解决方案1】:

BGP mode 中配置的 Calico 要求所有实例都位于同一子网中才能开箱即用。

要将 calico 用于跨多个可用区的部署,您必须:

禁用 AWS 源/目标检查(参见此处):

您可以使用 AWS CLI 做到这一点:

    aws ec2 modify-instance-attribute --no-source-dest-check --instance-id          $EC2_INSTANCE_ID --region <REGION-WHERE-EC2-INSTANCE-IS-LAUNCHED>

或使用 AWS 控制台:

  1. 打开 Amazon EC2 控制台https://console.aws.amazon.com/ec2/
  2. 在导航窗格中,选择Instances
  3. 选择 NAT 实例,选择 ActionsNetworkingChange Source/Dest。检查
  4. 对于 NAT 实例,验证此属性是否已禁用。否则,请选择是,禁用
  5. 如果 NAT 实例有辅助网络接口,请从 Description 选项卡上的 Network interfaces 中选择它,然后选择 转到网络接口页面的接口 ID。选择 操作更改源/目标。选中,禁用设置,然后选择保存。*

在 Calico IP 池上启用 IPIP 封装和传出 NAT

(IPPool) 表示 Calico 的 IP 地址集合 期望分配端点 IP。 (see here how to set it up)

,那么所有 Kubernetes 实例必须位于同一个子网中,Calico 才能开箱即用。

要启用“CrossSubnet”IPIP 功能,请配置您的 Calico IP 池资源以将 IPIP 模式启用为“CrossSubnet”,如下例所示:

apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: ippool-multi-az
spec:
  cidr: 192.168.0.0/16
  ipipMode: CrossSubnet
EOF

上面的示例引用了来自 Calico 文档的 AWS cloud configuration。请注意,Calico 文档也有关于 GCP, Azure and IBM 的信息。

备注:如果您在“艰难的道路”中遇到另一个问题,您可能希望将另一个集群用作参考,该集群是按照以下 calico 指南创建的:

最后,这个关于calico routing modes 的非常好的文档也值得一看(它还显示了跨子网ipip 模式)。

【讨论】:

  • 谢谢 thomas,我希望这能帮助其他人开始做这些事情。我将在再次测试后分享反馈,或者如果我没有从 Github 问题中收到任何回复。 +1 来自我。干杯!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多