我已经实现了一个多主机HA kubernetes集群,并希望按照here中描述的方式来实现Calico。我能够完成所有步骤,并且我的pod和服务以及不同节点中的pod和其他pod之间没有连接。
唯一不同的是,我在AWS中使用了两个不同的an,我想这应该不是问题。我可以看到pod正在获取正在创建的IP和calico网络接口,但仍然可以看到我解释过的连接。Node甚至没有公共互联网接入。我在指南中做了完全相同的BGP配置,但没有运气,当涉及到多可用区部署时,我不太确定BGP配置中有什么需要更改的。我不太了解Calico BGP配置。
不幸的是,calicoctl节点诊断不能正常运行,也不能提供更多的信息。
我希望你能在这里提出宝贵的想法和建设性的批评来解决这个问题。
发布于 2020-11-10 23:51:33
在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>或使用亚马逊网络服务控制台:
在导航窗格中打开亚马逊
,禁用该设置,然后选择
在Calico IP池上启用IPIP封装和传出NAT
(
IPPool)表示一个IP地址集合,Calico希望从中分配端点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模式)。
https://stackoverflow.com/questions/64731087
复制相似问题