首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同主机中的pods和服务之间以及pods之间的calico网络连接失败

不同主机中的pods和服务之间以及pods之间的calico网络连接失败
EN

Stack Overflow用户
提问于 2020-11-08 02:33:25
回答 1查看 434关注 0票数 2

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

唯一不同的是,我在AWS中使用了两个不同的an,我想这应该不是问题。我可以看到pod正在获取正在创建的IP和calico网络接口,但仍然可以看到我解释过的连接。Node甚至没有公共互联网接入。我在指南中做了完全相同的BGP配置,但没有运气,当涉及到多可用区部署时,我不太确定BGP配置中有什么需要更改的。我不太了解Calico BGP配置。

不幸的是,calicoctl节点诊断不能正常运行,也不能提供更多的信息。

我希望你能在这里提出宝贵的想法和建设性的批评来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-11-10 23:51:33

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

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

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

您可以使用AWS CLI:执行此操作:

代码语言:javascript
复制
    aws ec2 modify-instance-attribute --no-source-dest-check --instance-id          $EC2_INSTANCE_ID --region <REGION-WHERE-EC2-INSTANCE-IS-LAUNCHED>

或使用亚马逊网络服务控制台:

在导航窗格中打开亚马逊

  • 控制台,选择Instances.
  • Select
  1. EC2 instance,然后选择Actions、Networking、Change Source/Dest。Check.
  2. For NAT实例,验证此属性是否已禁用。否则,选择网络是,Disable.
  3. If NAT实例有一个辅助网络接口,从Description选项卡上的 interfaces中选择它,然后选择接口ID以转到网络接口页面。选择Actions,Change Source/Dest。选中Save.*

,禁用该设置,然后选择

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

(IPPool)表示一个IP地址集合,Calico希望从中分配端点IP。(see here how to set it up)

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

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

代码语言:javascript
复制
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模式)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64731087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档