1 Calico默认的网络模式是IPIP
2 切换到BGP网络模式
2.1 确保安装了calicoctl工具
2.2 配置一个global BGP peer
global BGP peer是确保和集群其他calico节点建立peer:
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
name: my-global-peer
spec:
peerIP: 192.20.30.40 # 每个calico node都和该地址建立peer
asNumber: 64567
2.3 为每个calico node配置BGP peer
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
name: rack1-tor
spec:
peerIP: 192.20.30.40
asNumber: 64567
nodeSelector: rack == 'rack-1' # 可以基于标签操作calico node
2.4 选择一个node作为RR反射器
这里不介绍full-mesh的组网,选择更适用于大规模集群的RR组网方式。选作为RR的node需要分配一个未使用的IPv4地址作为Cluster-ID。
使用如下命令将指定node配置成RR:
kubectl annotate node {node-name} projectcalico.org/RouteReflectorClusterID=244.0.0.1
为该node打一个标签更便于其他node与其建立BGP peer:
kubectl label node {node-name} route-reflector=true
使用如下配置建立RR组网:
kind: BGPPeer
apiVersion: projectcalico.org/v3
metadata:
name: peer-with-route-reflectors
spec:
nodeSelector: all()
peerSelector: route-reflector == 'true'
完成后使用
calicoctl node status
可以查看路由条目。
3 切换到Overlay网络模式
假设IP资源池(CIDR)为192.68.0.0/16。
3.1 配置跨子网封装模式为IP-IP
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: ippool-ipip-cross-subnet-1
spec:
cidr: 192.168.0.0/16
ipipMode: CrossSubnet
natOutgoing: true
3.2 配置所有流量封装模式为IP-IP
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: ippool-ipip-1
spec:
cidr: 192.168.0.0/16
ipipMode: Always
natOutgoing: true
3.3 配置跨子网封装模式为VxLAN
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: ippool-vxlan-cross-subnet-1
spec:
cidr: 192.168.0.0/16
vxlanMode: CrossSubnet
natOutgoing: true
3.4 配置所有流量封装模式为VxLAN
apiVersion: projectcalico.org/v3
kind: IPPool