在BGP 模式下配置的 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 控制台:
- 在https://console.aws.amazon.com/ec2/打开 Amazon EC2 控制台 。
- 在导航窗格中,选择 Instances。
- 选择 NAT 实例,选择 Actions、 Networking、 Change Source/Dest。检查。
- 对于 NAT 实例,验证此属性是否已禁用。否则,选择 是,禁用。
- 如果 NAT 实例有辅助网络接口, 请从描述选项卡 上的 网络接口中选择它, 然后选择接口 ID 以转到网络接口页面。选择
操作、 更改源/目标。检查,禁用设置,然后选择 保存。*
在 Calico IP 池上启用 IPIP 封装和传出 NAT
( IPPool
) 表示 Calico 期望从中分配端点 IP 的 IP 地址集合。(请参阅此处如何设置)
,那么所有 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 云配置。请注意,Calico 文档还包含有关GCP、Azure 和 IBM的信息。
备注:如果您遇到“困难的方式”的另一个问题,您可能希望使用通过以下 calico 指南创建的另一个集群作为参考:
最后,值得一看的是这个关于calico路由模式的非常好的文档(它还显示了跨子网 ipip 模式)。